QT基础(三)----QPainter画图功能 & 画图小项目

本文介绍了QPainter的基本绘图功能,并通过一个画板小项目进行实践,详细讲解了如何在鼠标移动时触发重绘更新画面。此外,还展示了如何在现有项目中添加按钮功能。
摘要由CSDN通过智能技术生成

一 QPainter基础功能介绍


头文件mywidget.h


#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include<QPainter>

class Mywidget : public QWidget
{
    Q_OBJECT
public:
    explicit Mywidget(QWidget *parent = 0);

    void paintEvent(QPaintEvent *e);

signals:

public slots:
};

#endif // MYWIDGET_H


源文件:


#include "mywidget.h"
#include<QApplication>
#include<QPixmap>

Mywidget::Mywidget(QWidget *parent) : QWidget(parent)
{

}

void Mywidget::paintEvent(QPaintEvent *e)
{
    QPixmap pixmap(size()); //相当于小汽车,将所画的东西打包塞进小汽车中

    //paintEvent需要画笔工具QPainter,在头文件QPainter中
    QPainter p(&pixmap);    //画在小汽车里边,能有效提高效率


    QTransform transform;
    //transform可以代替p的translate,因为他会进行一系列复杂的运算,平移、旋转、缩放等等
    //虽然p也有scale,rotate,translate等函数
    transform.rotate(10);
    transform.scale(0.8, 0.8);  //缩放功能
    //将以下所有的图像旋转10度,改语句后面的所画的图像都要旋转
    p.setTransform(transform);
    //将下方画的所有图形移动相对应的位置,整体图像平移,只影响这句话之后的语句,知道遇到下一个translate语句
    p.translate(100, 100);
    //消锯齿,让画出的图形更加美观
    p.setRenderHint(QPainter::SmoothPixmapTransform);
    //设置画笔属性
    p.setPen(QPen(Qt::red, 2, Qt::DashDotLine));
    //设置封闭图像的填充颜色,从BrushStyle文件中找,要学会查询函数的使用准则
    p.setBrush(Qt::CrossPattern);
    //设置字体格式,宋体, 40个像素, 加粗值为100, 斜体
    p.setFont(QFont("宋体", 40, 100, true));

    QTransform transform2;
    transform.scale(0.5, 0.5);
    //这里的false代表是和前面的transform相互独立,效果不叠加
    p.setTransform(transform2, false);


    //画一条直线
    p.drawLine(QPoint(0, 0), QPoint(100, 100));
    //画一个椭圆,第一个参数为中心点,第二个第三个分别为
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值