专栏中心

EEPW首页 > 专栏 > Qt 2D绘图(四)绘制路径(原创)

Qt 2D绘图(四)绘制路径(原创)

发布人:0750long 时间:2010-02-05 来源:工程师 发布文章

 

 

声明:本文原创于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。
http://hi.baidu.com/yafeilinux 查看原文
接着上一次的教程,这次我们学习在窗体上绘制路径。QPainterPath这个类很有用,这里我们只是说明它最常使用的功能,更深入的以后再讲。
1.我们更改paintEvent函数如下。
void Dialog::paintEvent(QPaintEvent *)
{
    QPainterPath path;
    path.addEllipse(100,100,50,50);
    path.lineTo(200,200);
    QPainter painter(this);
    painter.setPen(Qt::green);
    painter.setBrush(Qt::yellow);
    painter.drawPath(path);
}
这里我们新建了一个painterPath对象,并加入了一个圆和一条线。然后绘制这个路径。
效果如下。


2.上面绘制圆和直线都有对应的函数啊,为什么还要加入一个painterPath呢?
我们再添加几行代码,你就会发现它的用途了。
void Dialog::paintEvent(QPaintEvent *)
{
    QPainterPath path;
    path.addEllipse(100,100,50,50);
    path.lineTo(200,200);
    QPainter painter(this);
    painter.setPen(Qt::green);
    painter.setBrush(Qt::yellow);
    painter.drawPath(path);
    QPainterPath path2;
    path2.addPath(path);
    path2.translate(100,0);
    painter.drawPath(path2);
}
效果如下。

这里我们又新建了一个painterPath对象path2,并将以前的path添加到它上面,然后我们更改了原点坐标为(100,0),这时你发现我们复制了以前的图形。这也就是painterPath类最主要的用途,它能保存你已经绘制好的图形。

3.这里我们应该注意的是绘制完一个图形后,当前的位置在哪里。
例如:
void Dialog::paintEvent(QPaintEvent *)
{
    QPainterPath path;
    path.lineTo(100,100);
    path.lineTo(200,100);
    QPainter painter(this);
    painter.drawPath(path);
}
效果如下。

可以看到默认是从原点(0,0)开始绘图的,当画完第一条直线后,当前点应该在(100,100)处,然后画第二条直线。
再如:
void Dialog::paintEvent(QPaintEvent *)
{
    QPainterPath path;
    path.addRect(50,50,40,40);
    path.lineTo(200,200);
    QPainter painter(this);

    painter.drawPath(path);
}
效果如下。可见画完矩形后,当前点在矩形的左上角顶点,然后从这里开始画直线。

我们可以自己改变当前点的位置。
void Dialog::paintEvent(QPaintEvent *)
{
    QPainterPath path;
    path.addRect(50,50,40,40);
    path.moveTo(100,100);
    path.lineTo(200,200);
    QPainter painter(this);
    painter.drawPath(path);
}
效果如下图。可见moveTo函数可以改变当前点的位置。

这里我们只讲解了绘制路径类最简单的应用,其实这个类很有用,利用它可以设计出很多特效。有兴趣的朋友可以查看一下它的帮助。因为我们这里只是简介,所以不再深入研究。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

美国拟将芯片补助转股权,台专家:将冲击企业信心

EDA/PCB 2025-08-21

打造智慧城市所面临的能源问题

“智家”家庭智能综合控制系统

视频 2009-11-16

华为麒麟 9020 集成了 5G 调制解调器,中国制造的 5G FEM

新型车身主动悬挂控制系统

视频 2009-11-16

最新的ARM技术以及嵌入式发展动态 下

视频 2009-11-25

SH-Stick试用套件演示

视频 2009-11-24

vivo迎接30周年 发布轻量混合实境头戴装置

基于LPC3250之一种海浪能发电系统

视频 2009-11-16

电流源

资源下载 2007-02-16

台积电“2纳米报价”震惊市场 才65%良率为何敢霸气开价?

EDA/PCB 2025-08-21

传特朗普强行入股英特尔/台积电/三星/美光

CoWoP对PCB厂广发战帖 NVIDIA既有供应商胜算更高

EDA/PCB 2025-08-22

Power Integrations推出太阳能赛车专用参考设计,采用高效率氮化镓芯片

中国挑战日功率半导体主导权 日媒:技术差距仅剩不到3年

高通发布第二代骁龙W5+与W5平台

更多 培训课堂
更多 焦点
更多 视频

技术专区