我是靠谱客的博主 殷勤大象,最近开发中收集的这篇文章主要介绍QPainter下绘制图像的擦除,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用qt5.12.9的qml开发框架下,用QPainter绘图开发一个白板应用发现了一个问题:

图案绘制完成后,想要擦除一部分已经绘制的图像,想使用eraseRect函数将绘制的图案擦除。但是背景色为一张图片,绘制图像的层就是透明色,这样可以保证绘制的图像和背景不被冲突。但是你再调用eraseRect函数对已经绘制的图案做擦除操作,会覆盖之前的图案并留下白色的填充,无法用透明色覆盖填充。

 

解决:

// point.model true:绘制红色的路径
false:清除红色的路径
if(point.model){
painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
painter->fillRect(point.x - (point.width/2), point.y - (point.width/2),
point.width, point.width, QColor(255,0,0,255));
}
else {
painter->setCompositionMode(QPainter::CompositionMode_Clear);
painter->eraseRect(point.x - (point.width/2), point.y -(point.width/2),
point.width, point.width);
}

设置QPainter的绘图模式,默认的绘图模式是运用使用透明度分量来绘制图案的,在清除的时候直接设置绘图模式为清除,后面绘制的绘制操作直接清除像素信息实现,清除之前的绘画内容并不遮挡背景图像的显示。

 

最后

以上就是殷勤大象为你收集整理的QPainter下绘制图像的擦除的全部内容,希望文章能够帮你解决QPainter下绘制图像的擦除所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部