按照俺以前的做法是在gimp中算好背景图片资源的坐标及尺寸,但是这样做也不好,针对窗口的不同大小,不同的分辨率,控件就偏多很历害。
但是如果限制窗口不能调节大小,也不好,毕竟在大分辨率的屏幕屏上,客户会不满意的。
由于俺使用的是png图片,不是svg,所以放大会有失帧现在,所以俺不让它放大。
只是如果窗口大了的话,就居中显示,以前该背景图片上的所有的控件坐标都是绝对坐标,所以当窗口改变时,计算好坐标再绘制背景图片,计算方法如下:
x= (window width - background image width) /2
y=(window height - background image height) /2
这样就相当于改变了绘制背景图像时的左上角坐标,但是图像尺寸还是按照以前的,不缩放。
以前的控件坐标是绝对于背景图片的,所以现在是背景图片偏移了坐标,
故对于控件的定位可以在resizeEvent()事件中,对控件坐标重新定位即可。
它的最新的绝对坐标计算方法是
绝对坐标+偏移量。
偏移量应该使用背景图片的偏移量。
若以前为
this->m_lineEditOut->setGeometry(62,81,31,10);
则现在应该变为
qint32 tOffsetX=(this->size().width()-this->m_backgroundPixmap.width())/2;
qint32 tOffsetY=(this->size().height()-this->m_backgroundPixmap.height())/2