QT的坐标系统
2015-10-19 15:27
543 查看
默认情况下,窗口和视口值得的都是绘图设备的那个矩形。
在Win10下,没有改变一个自定义的widget的尺寸时(通过resize() 函数,resize() 函数的参数是物理像素),画出的widget是640×480物理像素的。
![](http://img.blog.csdn.net/20151019103541247?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当改变窗口的逻辑尺寸,注意物理尺寸默认的仍然是640*480的物理像素大小。
![](http://img.blog.csdn.net/20151019103847681?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当改变窗口坐标系之后再修改视口坐标系:
![](http://img.blog.csdn.net/20151019151941619?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
此时视口的大小为 200×200/200 = 200, 200×200/400 = 100.
也就是绿色的区域的大小为200*100 物理像素。
给人的感觉是:画图的区域由视口和窗口的较小的那个决定,包括QPainter 的坐标。较小的那个尺寸需要按照较大的那个,按照比例来换算。较大的那个的尺寸是物理像素尺寸。
在Win10下,没有改变一个自定义的widget的尺寸时(通过resize() 函数,resize() 函数的参数是物理像素),画出的widget是640×480物理像素的。
void PaintD::paintEvent(QPaintEvent *) { painter.begin(this); painter.fillRect(0, 0, 200, 200, Qt::green); painter.drawPoint(100, 100); painter.drawLine(0,0, 100, 100); painter.end(); }使用默认的窗口的物理大小,此时的逻辑坐标和物理坐标一致:
当改变窗口的逻辑尺寸,注意物理尺寸默认的仍然是640*480的物理像素大小。
void PaintD::paintEvent(QPaintEvent *) { painter.begin(this); painter.setWindow(0, 0, 200, 200); //设置逻辑坐标窗口的尺寸 painter.fillRect(0, 0, 200, 200, Qt::green); painter.translate(100, 100); //平移坐标原点到矩形的中心 painter.drawPoint(100, 100); painter.drawLine(0,0, 100, 100); painter.end(); }
当改变窗口坐标系之后再修改视口坐标系:
void PaintD::paintEvent(QPaintEvent *) { painter.begin(this); painter.setWindow(0,0,200, 400); painter.setViewport(0, 0, 200, 200); //设置逻辑坐标窗口的尺寸 painter.fillRect(0, 0, 200, 200, Qt::green); painter.drawPoint(100, 100); painter.drawLine(0,0, 100, 100); painter.end(); }
此时视口的大小为 200×200/200 = 200, 200×200/400 = 100.
也就是绿色的区域的大小为200*100 物理像素。
给人的感觉是:画图的区域由视口和窗口的较小的那个决定,包括QPainter 的坐标。较小的那个尺寸需要按照较大的那个,按照比例来换算。较大的那个的尺寸是物理像素尺寸。
相关文章推荐
- Qt学习之路_4(Qt UDP的初步使用)
- OpenHW12手记--Qt网络服务(TCP UDP)的建立
- emqttd java代码测试
- emqttd介绍和集群安装
- QT5 中文乱码
- Qt学习历程(一):Qt5.5.1(mingw)静态编译步骤
- Qt Creator创建 的 project工程文件介绍
- Qt编译问题笔记
- QT总结(一)
- qt调动DLL
- 关于Qt版本与安装
- 如何在Qt中写两个类,它们可以相互发信号与接收信号
- Qt5中自带串口类QtSerialPort
- 如何打印Qt中的枚举所对应的字符串
- UFT(QTP)使用-1
- Qt中foreach及QList的使用
- Qt 怎么添加图片文件?
- Qt 怎么添加图片文件?
- Qt 4.8中使用ActiveQt
- pyqt基础教程(一)