QT窗体绘图QPainter

QPainter是Qt库中的一个类,用于在各种QPaintDevice上绘制图形,如窗口、图像等。它提供了丰富的绘图函数,包括drawLine、drawRect、drawEllipse、drawArc和drawText等,支持设置画笔和画刷属性来定制图形的外观。在窗体上进行绘图时,通常在paintEvent函数中使用QPainter,同时可以启用Antialiasing以获得平滑效果。
摘要由CSDN通过智能技术生成

QPainter

INSCODE AI 创作助手:
QPainter是Qt中的一个类,用于在窗口、图像或其他用户界面上绘制图形和文本。它提供了一些方便的方法来画线、矩形、圆、多边形和文本

QPainter绘图函数

INSCODE AI 创作助手:
QPainter是Qt中一个用于绘图的类,它提供了一系列的绘图函数。以下是一些常用的绘图函数:
void QPainter::drawLine(int x1, int y1, int x2, int y2):绘制一条从(x1, y1)到(x2, y2)的直线。
void QPainter::drawRect(int x, int y, int width, int height):绘制一个左上角坐标为(x,y),宽为width,高为height的矩形。
void QPainter::drawEllipse(int x, int y, int width, int height):绘制一个左上角坐标为(x,y),宽为width,高为height的椭圆。
void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle):绘制一个左上角坐标为(x,y),宽为width,高为height的椭圆弧,从startAngle开始,扫过spanAngle度。
void QPainter::drawPixmap(int x, int y, const QPixmap& pixmap):绘制一个pixmap图像,左上角坐标为(x,y)。
void QPainter::drawText(int x, int y, const QString& text):在点(x,y)的位置绘制一行文本。
void QPainter::setPen(const QPen& pen):设置画笔,用于绘制线条和轮廓。
void QPainter::setBrush(const QBrush& brush):设置画刷,用于填充形状和区域。
以上是常用的绘图函数,QPainter提供了更多的绘图函数,可以根据需要选择使用。

包含头文件


#include <QPainter>

QPainter能够在任何QPaintDevice上绘图,如QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, and QPixmap
当被绘制的设备是一个widget的时候,QPainter只能在paintEvent()函数中或者被该函数调用的函数当中使用
在这里插入图片描述
Qt::BrushStyle
在这里插入图片描述
Qt::PenStyle
在这里插入图片描述
qt窗体区域图
在这里插入图片描述

在窗体上进行绘图代码


void MainWindow::paintEvent(QPaintEvent *event){
    QPainter painter(this);
    //反走样
    painter.setRenderHint(QPainter::Antialiasing, true);
    //画背景图
    painter.drawPixmap(400,30, 200, 180, QPixmap(":/new/prefix1/pic.jpg"));

    //定义画笔
    QPen pen;
    pen.setWidth(2);//设置线宽
    pen.setColor(QColor(222,255,55));//颜色
    pen.setStyle(Qt::SolidLine);//样式
    //画刷
    QBrush brush;
    brush.setColor(Qt::black);//颜色
    brush.setStyle(Qt::SolidPattern);//样式
    //设置画笔画刷
    painter.setPen(pen);
    painter.setBrush(brush);
    //画直线
    painter.drawLine(50,50,150,50);
    painter.drawLine(20,50,250,150 );
    //画矩形
    painter.drawRect(70,200,100,50);
    //画椭圆
    painter.drawEllipse(QPoint(270,150),50,80);

    //画文字
    QFont font;
    font.setFamily("MV Boli");//文字字体
    font.setPixelSize(20);//文字大小
    pen.setColor(QColor(0,255,55));//文字颜色
    painter.setFont(font);
    painter.setPen(pen);
    painter.drawText(200, 300, "Qt Creator 3.4.2 (opensource)");//文本内容

}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百口可乐__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值