- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
QT绘图函数
8-1 用QPainter绘图(Painting with QPainter)?2011-10-26 19:56:04|??分类: /zylnilingxi@126/blog/默认分类 |??标签: |字号大中小?订阅 /iamdbl/article/details1 用QPainter绘图(Painting with QPainter) 分类: /iamdbl/article/category/275004C++ GUI Programming with Qt 4 2007-05-29 21:52 8228人阅读 /zylnilingxi@126/blog/static/16925213020119267564134/评论(3) 收藏 /zylnilingxi@126/blog/static/16925213020119267564134/举报 要在绘图设备(paint device,一般是一个控件)上开始绘制,我们只要创建一个QPainter,把绘图设备指针传给QPainter对象。例如:oid MyWidget::paintEvent(QPaintEvent *event){ QPainter painter(this); ...}?使用QPainter的draw…()函数我们可以绘制各种图形。图8.1给出了主要的一些。绘制的方式由QPainter的设置决定。设置的一部分是从绘图设备得到的,其他是初始化时的默认值。三个主要的设置为:画笔,刷子和字体。画笔用来绘制直线和图形的边框。包含颜色,宽度,线型,角设置和连接设置。刷子是填充几何图形的方式。包含颜色,方式设置,也可以是一个位图或者渐变色。字体用来绘制文本。字体的属性很多,如字体名,字号等。 这些设置随时可以改变,可用QPen,QBrush,QFont对象调用setPen(),setBrush(),setFont()修改。 Figure 8.1. QPainters most frequently used draw...() functionsFigure 8.2. Cap and join styles XMLNAMESPACE PREFIX =O / XMLNAMESPACE PREFIX =V /?Figure 8.3. Pen styles?Figure 8.4. Predefined brush styles 现在来看看具体的例子。下面的代码是绘制图8.5(a)中椭圆的代码:QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));painter.setBrush(QBrush(Qt::green, Qt::SolidPattern));painter.drawEllipse(80, 80, 400, 240);调用函数setRenderHint(QPainter::Antialiasing,true),使绘制时边缘平滑,使用颜色浓度的变化,把图形的边缘转换为象素时引起的扭曲变形尽可能减少,在支持这一功能的平台或者绘图设备上得到一个平滑的边缘。Figure 8.5. Geometric shape examples 下面的代码是图8.5(b)中绘制扇形的代码:QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);painter.setPen(QPen(Qt::black, 15, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin));painter.setBrush(QBrush(Qt::blue, Qt::DiagCrossPattern));painter.drawPie(80, 80, 400, 240, 60 * 16, 270 * 16);函数drawPie()的最后两个参数值的单位为一度的十六分之一。?下面的代码是图8.5(c)中绘制贝赛尔曲线的代码: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::black, 8));painter.drawPath(path);?通
文档评论(0)