QT绘图(添加背景,画图形)

绘图设备:

QPixmap:针对屏幕进行优化了,和平台相关
QImage:和平台无关,可以对图片进行修改,在线程中绘图
QPicture:保存绘图的状态,保存为二进制文件

画背景图

创建一个widget项目。

在.h文件中添加paintEvent()函数

protected:
    //重写绘图事件
    //如果在窗口绘图,必须在绘图事件里实现
    //绘图事件内部自动调用,窗口需要重绘的时候(状态改变)
    void paintEvent(QPaintEvent *);

按F4,编写槽函数

void Widget::paintEvent(QPaintEvent *){
    //QPainter p(this);
    QPainter p;  //创建画家对象
    p.begin(this); //指定当前窗口为绘图设备

    //绘图操作
    //画背景图
    p.drawPixmap(0,0,width(),height(), QPixmap("../Image/7D016817BF7BEE8D56116FCBA333DBFB.jpg"));
    p.end();
}

在这里插入图片描述这个图片文件要和在这里插入图片描述放在同一目录下。
QPixmap("…/Image/7D016817BF7BEE8D56116FCBA333DBFB.jpg"));中7D016817BF7BEE8D56116FCBA333DBFB.jpg是图片名。

width(),height()会自动获取窗口的高度和宽度。
QT绘图(添加背景,画图形)_第1张图片QT绘图(添加背景,画图形)_第2张图片
便生成了以该图片为背景的窗口。

画图形

先加上头文件

#include 

在槽函数中加上

void Widget::paintEvent(QPaintEvent *){
    //QPainter p(this);
    QPainter p;  //创建画家对象
    p.begin(this); //指定当前窗口为绘图设备

    //绘图操作
    //定义笔
    QPen pen;
    pen.setWidth(5); //设置线宽
    //pen.setColor(Qt::red); //设置颜色
    pen.setColor(QColor( 14, 9, 234));  //rgb设置颜色
    pen.setStyle(Qt::DashLine); //设置风格

    //把画笔交给画家
    p.setPen(pen);

    //画直线
    p.drawLine(50,50,200,50);
    p.drawLine(50,50,50,200);

    //创建画刷对象
    QBrush brush;
    brush.setColor(Qt::red); //设置颜色
    brush.setStyle(Qt::Dense1Pattern); //设置样式

    //把画刷交给画家
    p.setBrush(brush);

   //画矩形
    p.drawRect(150,150,100,50);

    //画椭圆
    p.drawEllipse(QPoint(150,150), 50, 25);
    p.end();
}

QT绘图(添加背景,画图形)_第3张图片
QT绘图(添加背景,画图形)_第4张图片

你可能感兴趣的:(QT)