QT中用QPainter类所画图像随窗口变化自适应变化
来源:互联网 发布:java ftp 上传文件 编辑:程序博客网 时间:2024/05/21 19:41
Qpainter类是QT中的一个画图类。该类是用画笔在窗口上直接绘制图像。通常情况下,图像的位置和大小在画图完成后就是定死的了。在实际应用中我们有时需要该图像随着窗口的拖动、最大化等操作下进行自适应变化。下面提出两种可以使所画图像可以随窗口自适应变化的方法。
第一种方法,用Qpainter类中的scale函数。代码如下:
QPainter painter(this);static double wid = rect().width();static double hei = rect().height();painter.setRenderHints(QPainter::Antialiasing, true);//抗锯齿double new_wid = rect().width()/wid;double new_hei = rect().height()/hei;painter.scale(new_wid, new_hei);
具体思路就是先获取当前窗口的宽和高保存到两个double变量中。在窗口变化后,将变化后的宽和高与最开始的宽和高作比,作为scale函数的参数。scale函数的两个参数分别是在横向和纵向上实际坐标和绘图坐标的比例关系。在窗口没有变动时,两个参数分别为1,1,表示所画图像的大小就是你最开始画的大小。随着窗口的变大变小,图像也会随之等比例变化。该方法的缺点是,如果图像是圆且横纵向变化比例不同,会有失真的情况。我是这么解决的,加了行代码:
double min = qmin(new_wid,new_hei);painter.scale(min,min);
这样可以使横纵向变化比例一致。
第二种方法,在窗口中加一个label控件,这个控件实际上是为了起到一个定位的作用。将所画图片的起始点、宽和高都用label的起点、宽和高来表示,不用具体的数值。用控制label大小变化大方法来控制图像的大小变化。例如:
QPixmap pix = QPixmap("D:/code_source/Qt/Qtpicture/Qtpicture/Debug/image/gradienter.png");painter->drawPixmap(-ui->label->width() / 2, -ui->label->height() / 2, ui->label->width(), ui->label->height(), pix);
这里只是举了一个图像坐标表示方法的例子,具体的label控件随窗口自适应变化的代码大家可以自行搜索一下。
阅读全文
0 0
- QT中用QPainter类所画图像随窗口变化自适应变化
- qt 背景随窗口变化
- jqGrid随窗口大小变化自适应大小
- qt中使用scrollarea控件显示滚动条随窗口自适应变化
- datagridview 大小自适应窗口大小,datagridview 随窗口大小变化而变化
- mfc控件自适应窗口大小,随窗口大小变化而变化
- jQuery 插件:随窗口大小变化的自适应高度元素
- MFC 随窗口变化
- Qt Designer生成的图形可以自适应窗口的大小变化
- Qt Quick Designer生成的图形可以自适应窗口的大小变化
- div高度随窗口变化而变化
- QT中如何让控件跟随随窗口大小变化
- qt designer布局:随着窗口大小变化
- 控件大小随窗口变化
- 插件echarts使数据可视化后,图随窗口自适应变化的方法
- QT5中的UI界面 控件随窗口自适应变化大小 无需写任何代码!
- 控件自适应窗口最大化后的位置变化
- C++ MFC控件随着窗口大小变化而自适应
- codeforce 731C Socks(并查集+贪心)
- RTP协议分析
- 冒泡排序和二分法排序的比较!!!
- POJ-1698 Alice's Chance(最大流)
- 1006. 换个格式输出整数 (15)
- QT中用QPainter类所画图像随窗口变化自适应变化
- 单独tomcat能正常运行eclipse中部署tomcat运行无法找到配置文件
- js节点的创建
- GitHub学习笔记 --- Ubuntu16.04sign_and_send_pubkey: signing failed: agent refused operation
- vue生命周期详解
- 数据库性能优化详解
- The meta-data is invalid or is corrupt
- 马化腾与铁路总公司陆东福会面
- JUC集合--ConcurrentSkipListSet