QPainter、QPen 、QBrush(概念)
创始人
2024-02-01 01:00:24

Qt中的三大绘画类:

  • QPainter :进行绘画
  • QPaintDevice :提供画图设备,是一个二维的抽象(是所有可绘制对象的基类)
  • QPaintEngine :提供了画家用于绘制到不同类型的设备上的界面

 QPainter(画家)

QPainter 提供高度优化的功能来完成 GUI 程序所需的大部分绘图。它可以绘制从简单线条到复杂形状(如馅饼和和弦)的所有内容。它还可以绘制对齐的文本和像素图。通常,它绘制“自然”坐标系,但它也可以进行视图和世界转换。QPainter 可以对继承QPaintDevice类的任何对象进行操作。

QPainter 一般再一个部件重绘事件的处理函数paintEvent()中进行绘制,使用时先创建QPainter对象。 

void paintEvent(QPaintEvent *event)绘画事件

在QPainter中可以有很多功能

  • 绘制图形

  • 绘制图片

  • 坐标变换等 

构造函数为:

注意创建对象时,一定要指定绘制对象,这样才能绘制。 

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter(this);//创建一个画家
}
begin(QPaintEvent *event)开始绘制
end()结束绘制
void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter;painter.begin(this);//指定设备painter.end();//结束绘制}


绘制图形

常用的一些图形:

绘制线条:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter(this);painter.drawLine(0,0,100,100);//绘制线条
}

绘制圆形:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter(this);painter.drawEllipse(100,100,100,100);//绘制圆
}

绘制矩形:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter(this);//        起始点,宽  高painter.drawRect(200,200,100,100);//绘制矩形
}

绘制圆弧:

QPainter::drawArc(int x,int y,int width,int height,intstartAngle,intspanAngle)

  • x  y  代表起始点
  • width  height  代表宽度和高度
  • startAngle  spanAngle  代表起始角度和跨越角度

 startAngle  spanAngle  代表起始角度和跨越角度

  • 这里的角度需要*16即一个完整的圆等于 5760 (16 * 360)
  • 正值为逆时针,负值为顺时针

正值为逆时针:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{painter.drawArc(100,100,100,100,90*16,180*16);//绘制弧线,起始点为90,跨度为180}

负值为顺时针:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{painter.drawArc(100,100,100,100,90*16,-180*16);//绘制弧线,起始点为90,跨度为-180}

 其他的可以根据帮助文档,查看使用方法。

 

QPen(画笔)

 QPen(画笔)

QPen可以为QPainter提供了画笔来绘制线条和形状的轮廓。

构造函数:

 最常用的构造函数为:

QPen(const QBrush &brush, qrealwidth, Qt::PenStylestyle= Qt::SolidLine, Qt::P enCapStylecap= Qt::SquareCap, Qt::PenJoinStylejoin= Qt::BevelJoin)

  • brush 画刷
  • Qt::PenStylestyle 笔的风格
  • Qt::PenCapStylecap 笔的帽子样式  
  • Qt::PenJoinStylejoin  笔的联接样式

Qt::PenStylestyle笔的风格

Qt::SolidLine实线
Qt::DashLine虚线
Qt::DotLine由几个像素分隔的点
Qt::DashDotLine交替的点和破折号
Qt::DashDotDotLine一个破折号,两个点,一个破折号,两个点
Qt::CushomDashLine使用QPainterPathStroker::setDashPattern() 定义的自定义模式。

 Qt::PenCapStylecap 笔的帽子样式 

Qt::SquareCap

方帽
Qt::FlatCap平帽
Qt::RoundCap圆帽

 

 Qt::PenJoinStylejoin  笔的连接样式

Qt::BevelJoin两条线之间的三角形凹口被填充
Qt::MiterJoin

线的外边缘延伸以成一定角度相交,并填充此区域

Qt::RoundJoin填充两条线之间的圆弧

 常用的函数:

setBrush()设置画刷
setCapStyle设置笔帽风格
setColor()设置颜色

setDashPattern()

将此笔的虚线模式设置为给定模式。这会将笔的样式隐式转换为Qt::CustomDashLine。
setJoinStyle()设置笔的连接样式
setStyle()设置笔的样式
setWidth()设置笔的宽度
setWidthF()设置笔的宽度浮点数

设置自定义的笔的样式:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter(this);QPen pen;QVector sing;qreal space=4;//空格数sing<<1<

 

QBrush(画刷)

QBrush 类定义了QPainter 绘制的形状的填充图案。

构造函数:

 常用的函数:

setColor()设置颜色
setStyle()设置画刷风格
setTexture()将画笔像素图设置为像素图
setTextureImage()将画笔图像设置为图像
setTransfrom()将矩阵设置为当前画笔上的显式转换矩阵

Qt::GlobalColor(颜色)

Qt::BrushStyle(画刷风格)

 画刷的使用:

void Widget::paintEvent(QPaintEvent *event)//绘画事件
{QPainter painter(this);QPen pen;QVector sing;qreal space=4;//空格数sing<<1<

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
南美洲有哪些国家 南美洲一共有... 南美洲是南亚美利加洲的简称,位于西半球,南美洲大部分地区位于南半球,南美洲东临大西洋,西临太平洋,南...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
南美洲有哪些国家 南美洲一共有... 南美洲是南亚美利加洲的简称,位于西半球,南美洲大部分地区位于南半球,南美洲东临大西洋,西临太平洋,南...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...