在PyQt中常用的图像类有4个,即QPixmap、QImage、QPicture和QBitmap。
- 是专门为绘图而设计的,在绘制图片时需要使用QPixmap;
- 提供了一个与硬件无关的图像表示函数,可以用于图片的像素级访问;
- 是一个绘图设备类,它继承自QPainter类,可以使用QPainter的begin()函数在QPicture上绘图,使用end()函数结束绘图,使用QPicture的save()函数将QPainter所使用过的绘图指令保存到文件中;
- 是一个继承自QPixmap的简单类,它提供了1bit深度的二值图像的类,QBitmap提供的单色图像可以用来制作游标(QCursor)或者笔刷(QBrush)。
运行效果如下:

注:在重构mouseMoveEvent函数时,buttons()函数可以获取鼠标指针移动过程中按下的所有按键,然后用Qt.LeftButton来判断是否按下了左键,必须使用该函数来判断按下鼠标的按键。
- 绘制矩形,出现重影:
运行效果如下:


注:其实,在拖动鼠标的过程中屏幕已经刷新了很多次,即paintEvent函数执行了很多次,每执行一次就会绘制一个矩形,拖动速度越快,重影越少。
- 使用双缓冲技术绘制矩形,避免出现重影:
运行效果如下:

双缓冲技术总结:
在这个例子中,要实现使用鼠标在界面上绘制一个任意大小的矩形而不出现重影,需要两个画布,其中一个作为临时缓冲区。为了在绘制时不出现重影,而且保证以前绘制的内容不消失,那么每一次绘制都是在原来的图形上进行的,所以需要绘制在辅助画布之前,先将pix的内容复制到辅助画布上。

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