QPainter绘图基本概念

QPainter 能绘制点、直线、圆、矩形等各种基本图形,还可以绘制文字和位图,用这些基本图形可以组成任何想要的图形。

QPainter绘图主要有以下概念

1.绘图设备

绘图设备包括 QWidget、 QPixmap、QPrinter 等。 QWidget 是最常见的绘图设备,所有的界面组件都是从 QWidget 继承而来的,界面组件的显示效果实际上是 QPainter 在 QWidget 上实现的。

QWidgetQWidget 是所有界面组件的基类,是最常见
的绘图设备类, 它有 QPaintDevice 和 QObject
两个父类,所以支持 Qt 的元对象系统。
 
QImage
 
QImage 是与件无关的表示图片的类,是为设备输入输出而优化设计的类,它可以直接进行图片像素数据的访问和操作。
QPixmapQPixmap 是为在屏幕上显示图片而优化设计的类。
QBitmapQBitmap 是 QPixmap 的子类,用于表示 1 位色深的单色位图。
QPictureQPicture 是用于记录和回放 QPainter 指令的类。
QSvgGenerator
 
QSvgGenerator 是用于创建 SVG 图形的绘图设备类,可缩放矢量图形( scalable vectorgraphics, SVG)是一种图片文件格式。使用 QPainter 可以在一个 QSvgGenerator 对象上绘图, 并能将其直接保存为 SVG 文件。 Qt 还提供了显示 SVG 图片文件的组件类 QSvgWidget。
QOpenGLPaintDevice
 
QOpenGLPaintDevice 是能用 OpenGL 渲染 QPainter 绘图指令的绘图设备类,它需要系统支持 2.0 以上版本的 OpenGL 或 OpenGL ES。
QPagedPaintDevice
 
 QPagedPaintDevice 是支持多个页面的绘图设备类,通常用于生成打印输出或 PDF 文件。QPrinter 是用于打印输出的类,打印输出实际上就是在 QPrinter 设备上绘图,可以生成一系列用于打印输出的页面。 QPdfWriter 是用于生成 PDF 文件的绘图设备类,使用 QPrinter在 QPdfWriter 设备上绘图就可以将绘图内容直接保存为 PDF 文件。


2.绘图事件paintEvent

需要在绘图事件paintEvent中,里创建一个 QPainter 对象来获取绘图设备的接口,然后用这个 QPainter 对象在绘图设备上绘图。

3.绘图过程

声明painter

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);//抗锯齿 高保真
    painter.setRenderHint(QPainter::TextAntialiasing);

设置画笔

    QPen pen;
    pen.setWidth(3);//线粗
    pen.setColor(Qt::red);//线条 颜色
    pen.setStyle((Qt::SolidLine));//实线
    pen.setCapStyle(Qt::FlatCap);//线的端点样式
    pen.setJoinStyle(Qt::BevelJoin);//两节点样式
    painter.setPen(pen);

设置画刷

 

    QBrush brush;
    brush.setColor(Qt::green);
    brush.setStyle(Qt::SolidPattern);//画刷填充样式
    painter.setBrush(brush);

绘图命令

    int W = this->width();
    int H = this->height();
    QRect rect(W/4,H/4,W/2,H/2);
    painter.drawRect(rect);

结果

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值