2025年qpainter在qimage中绘图(qpainter画图片)

qpainter在qimage中绘图(qpainter画图片)div style width 656px margin 0 padding 0 height 0 div lt

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




讯享网

 <tbody> <tr> <td id="artContent" style="max-width: 656px;"> <div style="width: 656px; margin: 0; padding: 0; height: 0;"></div> <p>说到绘图,自然想到画在哪里?像photoshop里面,我们一开始创建的就是画布,指定画布大小,默认可能是800x800,没有大小,软件就没法给你一个绘画区域,所以,大小是必须的。</p><p>而在Qt编程中,绘画类要工作,也必须得有绘画画布,也叫做绘画设备device。</p><p>QPainter可以在任何QPaintDevice子类上绘制。QPaintDevice的绘图功能由QWidget、QImage、QPixmap、QPicture、QPrinter和QOpenGLPaintDevice实现。</p><p>接下来,我们说说这些画布类的用法:</p><p><span style="color: rgb(255, 0, 0);"><strong>QWidget&nbsp;</strong></span></p><p>QWidget类是Qt Widgets模块中用户界面元素的基类。</p><p>它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制它自己的视图。</p><p><span style="color: rgb(255, 0, 0);"><strong>QImage&nbsp;</strong></span></p><p>QImage类提供了一种独立于硬件的图像表示,它针对 I/O 以及直接像素访问和操作进行了设计和优化。</p><p>QImage支持多种图像格式,包括</p><p>单色图像、8 位图、32 位图和 alpha 混合图像。</p><p style="text-align:center;"><p>使用QImage作为绘图设备的一个优点是可以以一种硬件平台无关的方式保证任何绘图操作的像素准确性。<span style="color: rgb(255, 0, 0);">另一个好处是可以在当前 GUI 线程之外的另一个线程中执行绘制。</span></p><p><span style="color: rgb(255, 0, 0);">QPixmap&nbsp;</span></p><p>QPixmap类是一种与屏幕无关的图像,它是为在屏幕上显示图像而设计和优化的。与QImage不同,像素图中的像素数据是内部的,由底层窗口系统管理,即只能通过QPainter函数或通过将QPixmap转换为QImage来访问像素。</p><p>为了使用QPixmap优化绘图,Qt 提供了QPixmapCache类,它可用于存储临时像素图,如果图像存储空间比QPixmapCache类的缓存限制空间小的话,图像生成效率很低。</p><p>Qt 还提供了QBitmap便利类,继承了QPixmap。QBitmap保证单色(1 位深度)像素图,主要用于创建自定义QCursor和QBrush对象,构造QRegion对象。</p><p><span style="color: rgb(255, 0, 0);">QOpenGLPaintDevice&nbsp;</span></p><p>Qt还提供了一些类,使得 OpenGL的使用变得容易。例如,QOpenGLPaintDevice启用 OpenGL API 以使用QPainter进行渲染。</p><p><span style="color: rgb(255, 0, 0);">QPicture&nbsp;</span></p><p>QPicture类是一个绘制设备,它记录和重放QPainter命令。图片以独立于平台的格式将画笔命令序列化到 IO 设备。</p><p>QPicture也与分辨率无关,即QPicture可以在不同的设备(例如 svg、pdf、ps、打印机和屏幕)上显示相同的效果。</p><p>Qt 提供了QPicture::load () 和QPicture::save () 函数以及用于加载和保存图片的流操作符。</p><p>自定义绘图后端设备</p><p>可以通过从QPaintDevice类派生</p><p>并重新实现虚函数QPaintDevice::paintEngine ()&nbsp;</p><p>来告诉QPainter应该使用哪个绘制引擎</p><p>在这个特定设备上绘制,来实现对新后端的支持。</p><p>要真正能够在设备上绘制,此绘制引擎必须是通过派生自 QPaintEngine类创建的自定义绘制引擎。</p> </td> </tr> </tbody> 

讯享网
小讯
上一篇 2025-04-23 17:11
下一篇 2025-05-16 12:41

相关推荐

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