填充模式Qt学习:QPainter之填充
发一下牢骚和主题无关:
这节先介绍Qt的内置填充模式,我们用一个三次贝塞尔曲线的例子来说明。然后引入目前大批应用的三种渐变填充模式。
填充模式应用setBrush()函数实现的。
下图是三次贝塞尔曲线的内置填充模式 :
构造函数顶用设置了图片作为全部窗口部件的背景:(当然也可以用指定颜色填充)
setAutoFillBackground(true); QPalette palette; //palette.setColor(QPalette::Background, QColor(192,253,123)); //palette.setColor(QPalette::Background, QColor(0,0,0)); palette.setBrush(QPalette::Background, QBrush(QPixmap(":/4.png"))); setPalette(palette); 具体的贝赛尔曲线和其填充如下代码: QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); QPainterPath path; path.moveTo(80,320); path.cubicTo(200,80,320,80,480,320); painter.setPen(QPen(Qt::red, 8)); painter.setBrush(QBrush(Qt::yellow, Qt::Dense7Pattern)); painter.drawPath(path);
这里说一下QPainterPath类, QPainterPath类可以通过连接基本的图形元夙来确定恣意的矢量形状:直线、椭圆、多边形、弧形、贝赛尔曲线和其他的绘制路径。绘制路径是基本的图元,从这个意义上来说,任何图形或图形组合都可以用绘制路径描述。
路径可以确定一个边缘,由边缘锁定的区域可以用画刷来填充。本例设置内置的画刷类型为 Dense7Pattern。
Qt内置的画刷类型有如下图所示:(来自于Qtassistant)
文章结束给大家分享下程序员的一些笑话语录:
程序语言综述
CLIPPER 程序员不去真的猎捕大象,他们只是购买大象部分的库然后花几年的时间试图综合它们。
DBASE 程序员只在夜间猎捕大象,因为那时没人会注意到他们还在使用石弓。
FOXPRO 程序员开始使用更新更好的步枪,这使他们花掉比实际狩猎更多的时间学习新的射击技术。
C 程序员拒绝直接购买步枪,宁可带着钢管和一个移动式机器车间到非洲,意欲从零开始造一枝完美的步枪。
PARADOX 程序员去非洲时带着好莱坞关于猎捕大象的电影剧本,他们认为照剧本行事就会逮到一头大象。
ACCESS 程序员在没有任何猎象经验的经验下就出发了,他们穿着华丽的猎装、带着全部装备,用漂亮的望远镜找到了大象,然后发觉忘了带扳机。
RBASE 程序员比大象还要稀少,事实上,如果一头大象看到了一个RBASE程序员,对他是个幸运日。
VISUAL ACCESS 程序员装上子弹、举起步枪、瞄准大象,这使大象感到可笑,究竟谁逃跑。他们无法抓住大象,因为由于他们对多重控制的偏爱,他们的吉普车有太多的方向盘因而无法驾驶。
ADA、APL和FORTRAN 程序员与圣诞老人和仙女一样是虚构的。
COBOL 程序员对和自己一样濒临灭绝的大象寄予了深切的同情。