Qt QPainter

QPainter需要在QPaintEvent中绘画

绘画需要笔

绘画需要的基础头文件

QPainter

QPaintEvent

QPen

QPainter

建立painter之后就可以绘画,pen这些都有默认实现

Qt QPainter_第1张图片

可画设备

圆用椭圆画

重新绘画

重新绘画只需要重新加入画笔就可以

painter.setPen(pen); // 重新设置画笔

painter高级设置

抗锯齿能力---setRenderHint

画出来的远见更加光滑,但是影响程序效率

    painter.drawEllipse(QPoint(100,100),50,50);
    painter.setRenderHint(QPainter::HighQualityAntialiasing);
    painter.drawEllipse(QPoint(200,200),50,50);

Qt QPainter_第2张图片

 移动画家位置---translate()----(实际上移动坐标原点)

    painter.drawRect(QRect(200,200,200,200));
    painter.translate(50,50);
    painter.drawRect(QRect(200,200,200,200));

Qt QPainter_第3张图片 保存和释放画家状态

Qt QPainter_第4张图片

 更新绘图事件

update()

update会自动调用paintEvent()函数,从小绘图。

rotate---顺时针旋转坐标系

注意:

1,坐标围绕原点旋转,需要使用translate将原点移动到旋转中心。

2,rotate只对调用rotate之后绘制的图形有旋转作用。

物体绕着中心原点自转

   

    painter.translate(width()/2,height()/2);
    painter.rotate(m_angle);

    // 绘制正方形
    QRectF rect(0, 0, 100, 100);
    painter.drawRect(rect);

物体自转

//设置旋转中心
    painter.translate(width()/2,height()/2);
    painter.rotate(m_angle);
    painter.drawEllipse(QPoint(0,0),50,25);

将图形的旋转中心设置到原点,图形就会绕着原点旋转,如果图形的旋转中心是自己的中心,就会自转。

paintEvent

系统自动调用。

Brush

brush是什么

就是对painter绘制出来的封闭图形进行颜色填充,粉刷。

    QBrush brush(QColor("#ffa400"));
    //brush.setColor(QColor("#ffa400"));
    painter.setBrush(brush);
    painter.drawRect(20,20,100,100);

注意:如果brush的brushStyle为No Brush,则表示这个brush为不粉刷模式,粉刷没有作用。

如果使用无参构造函数,表示建立黑色粉刷笔,并且不会粉刷,不会填充形状。

painter取消粉刷

painter.setBrush(Qt::NoBrush);

 怎么获取屏幕中心位置:

painter.drawEllipse(QPoint((this->width())/2,(this->height())/2),100,100);

QPainterPath

函数

QPainter::QPainter(QPaintDevice *device)

device指定在哪个对象绘画

Qt颜色

Qt::中也有

绘图设备

绘图的几种类的比较

Qt QPainter_第5张图片

为什么可以在QWidget上绘图

Qt QPainter_第6张图片 

 

你可能感兴趣的:(qt,开发语言)