2025年qpainter画图片(qpainter qimage)

qpainter画图片(qpainter qimage)include widget h include ui widget h include lt QPainter gt include lt QPicture gt Widget Widget QWidget parent QWidget parent

大家好,我是讯享网,很高兴认识大家。



#include widget.h #include ui_widget.h #include <QPainter> #include <QPicture> Widget::Widget(QWidget *parent) : 
讯享网QWidget(parent), ui(</span><span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Ui::Widget) 
{
讯享网
ui</span>-&gt;setupUi(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 在QPixmap中画图</span> QPixmap pix(<span style="color: rgba(128, 0, 128, 1)">300</span>, <span style="color: rgba(128, 0, 128, 1)">300</span>); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 纸的大小</span> 
pix.fill(Qt::red);
讯享网QPainter p(</span>&amp;<span style="color: rgba(0, 0, 0, 1)">pix); p.setPen(QPen(Qt::green, </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">)); p.drawRect(</span><span style="color: rgba(128, 0, 128, 1)">10</span>, <span style="color: rgba(128, 0, 128, 1)">10</span>, <span style="color: rgba(128, 0, 128, 1)">280</span>, <span style="color: rgba(128, 0, 128, 1)">280</span><span style="color: rgba(0, 0, 0, 1)">); p.drawEllipse(</span><span style="color: rgba(128, 0, 128, 1)">150</span>, <span style="color: rgba(128, 0, 128, 1)">150</span>, <span style="color: rgba(128, 0, 128, 1)">50</span>, <span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">); pix.save(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">D:\mypixmap.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 指定绘图设备 1. 构造函数中(参数是绘图设备) </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 2. begin(参数是绘图设备) </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> end(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 在QImage中画图</span> QImage img(<span style="color: rgba(128, 0, 128, 1)">300</span>, <span style="color: rgba(128, 0, 128, 1)">300</span>, QImage::Format_RGB32); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 纸的大小</span> 
img.fill(Qt::red);
p.begin(</span>&amp;<span style="color: rgba(0, 0, 0, 1)">img); p.setPen(QPen(Qt::green, </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">)); p.drawRect(</span><span style="color: rgba(128, 0, 128, 1)">10</span>, <span style="color: rgba(128, 0, 128, 1)">10</span>, <span style="color: rgba(128, 0, 128, 1)">280</span>, <span style="color: rgba(128, 0, 128, 1)">280</span><span style="color: rgba(0, 0, 0, 1)">); p.drawEllipse(</span><span style="color: rgba(128, 0, 128, 1)">150</span>, <span style="color: rgba(128, 0, 128, 1)">150</span>, <span style="color: rgba(128, 0, 128, 1)">50</span>, <span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)">); p.end(); img.save(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">D:\myImage.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 在QPicture中画图 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 1. 保存的是绘图步骤 -- 画家类 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 2. 不是图片, 二进制文件(save保存生成的文件) </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 3. 不依赖平台</span> 
QPicture pic; // 纸的大小 p.begin(&pic); p.setPen(QPen(Qt::green, 10)); p.drawRect(10, 10, 280, 280); p.drawEllipse(150, 150, 50, 50); p.end(); pic.save(D:\mypic.aaa); } // QWidget // QPixmap QImage QPicture QBitmap(黑白图片) // QBitmap 父类 QPixmap // QPixmap – 图片类, 主要用来显示, 它针对于显示器显示做了特殊优化, 依赖于平台的, 只能在主线程中使用(UI线程) // QIamge – 图片类 , 不依赖有平台, (图片传输 , 可以在多线程中对其进行操作) Widget::~Widget() {
讯享网</span><span style="color: rgba(0, 0, 255, 1)">delete</span><span style="color: rgba(0, 0, 0, 1)"> ui; 
} void Widget::paintEvent(QPaintEvent *) {
QPainter p(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">); QPicture pic; pic.load(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">D:\mypic.png</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">); p.drawPicture(</span><span style="color: rgba(128, 0, 128, 1)">100</span>, <span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">, pic); 
}

讯享网

小讯
上一篇 2025-04-13 21:56
下一篇 2025-05-26 23:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/143653.html