2025年qpainter绘制图片(qpainter drawline)

qpainter绘制图片(qpainter drawline)p Qt 的二维图形引擎是基于 QPainter 类的 QPainter 既可以绘制几何图形 点 线 矩形 弧形 饼状图 多边形 贝塞尔弧线等 也可以绘制像素映射 图像和文字 此外 QPainter 也支持一些高级特性 例如反走样 p

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



 <p>    Qt的二维图形引擎是基于QPainter类的&#xff0c;QPainter既可以绘制几何图形&#xff08;点、线、矩形、弧形、饼状图、多边形、贝塞尔弧线等&#xff09;&#xff0c;也可以绘制像素映射、图像和文字。此外&#xff0c;QPainter也支持一些高级特性&#xff0c;例如反走样&#xff08;针对文字和图形边缘&#xff09;、像素混合、渐变填充和矢量路径等&#xff0c;QPainter也支持线性变换&#xff0c;例如平移、旋转、错切和缩放。</p> 

讯享网

    QPainter可以画在“绘图设备”上,例如:QWidget、QPixmap、QIamge或者QSvgGenerator。QPainter也可以与QPrinter一起使用来打印文件盒创建PDF文档。这意味着通常可以用相同的代码在屏幕上显示数据,也可以生成打印形式的报告。

    如果要在绘图设备(一般为窗口部件)上绘图,只需创建一个QPainter,再将指针传到该设备中。

例如:

    使用QPainter的 绘制点drawPoint()、绘制直线drawLine()、绘制折线drawPolyLine()、绘制多点drawPoints()、绘制多直线drawLines()、绘制矩形区域drawRect()、绘制圆角区域drawRoundRect()、绘制椭圆drawEllipse()、绘制背景图片drawPixmap()等函数,可以绘制各种各样的形状.

    绘制效果取决于QPainter的设置,一些是从设备中取得的,然而有些被初始化成默认值。三个主要设置是画笔、画刷、字体:

    画笔:用来画线和边缘。它包含颜色、宽度、线性、拐点风格以及连线风格。

    拐点:FlatCap(平的),SquareCap(方的),RoundCap(圆的),MiterJoin(斜接尖角),BevelJoin(斜接平角),RoundJoin(斜接圆角)

    连线方式:SolidLine(直线),DashLine(虚线),DotLine(点线),DashDotLine(虚点线) ,DashDotDotLine(虚点点线),NoPen(没有线)

    画刷:用来填充几何图形的图案。它一般由颜色和风格组成,但同时也可以是纹理(一个不断重复的图像)或者是一个渐变。

 

    字体:用来绘制文字。字体有很多属性,包括字体族和磅值大小。

    可以随时调用QPen、QBrush或者QFont对象的setPen()、setBrush()和setFont()来修改这些设置。

   

举例:

1、在当前窗口绘制


讯享网

绘制直线:

绘制背景图片:

绘制矩形:

绘制折线:

绘制椭圆:

绘制圆:

绘制圆角:

绘制饼状图:

绘制贝塞尔曲线:

2、在当前窗体上的子组件绘制

    paintEvent()可以实现图形的绘制,前提是绘制当前窗体!如果界面上有其它组件,如何来绘制呢?

   (1)对子组件自定制,可以重新实现一个类,实现paintEvent()

   (2)添加监听器line_label->installEventFilter(this),实现eventFilter()。

    关于(1)就不再多讲,同1,(2)代码如下:

    这样就可以实现在myWidget窗体上的QLabel的绘制!

    优劣性:如果窗口子部件较多,若每个部件的绘制相同,则可采用(1),若不相同,那么根据(1)就会实现较多的类,而(2)只需要添加多个监听器即可,建议采用方式(2)!

    就我所知,setAttribute(Qt::WA_TranslucentBackground)有一定的弊病,当窗体最小化(showMinimized())后,再次显示时,窗体上的组件就会失去焦点!

    好了,二维绘图基本就介绍到这里,代码实现可以不尽相同,只要掌握原理,实现起来就会游刃有余!

小讯
上一篇 2025-06-10 10:20
下一篇 2025-05-13 19:49

相关推荐

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