Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3518206
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: C/C++

2009-03-10 21:09:28

用一系列点创建了一条折线,放在一个QPainterPath里面,想通过QPainterPathStroker取得该折线的轮廓(折线有宽度,采用RoundJoin连接类型),问题是在轮廓内部,折线拐角的地方总是产生如图所示的圆形或三角形的线条,

 
 
   
 
方法:
1。依次取折线的每一段线段
2。以每一段线段的首端和末端为起点,在线段的两侧分别做垂线,长度为折线宽度的一半,保存垂线的末端端点,连接线段同侧的垂线的末端端点
3。取下一段线段,按上面的方法连接垂线端点,求连线与之前的线段的同侧的连线的交点(如果是拐角的外侧垂线端点的连线,在其延长线上),用该点更新上一次保存的线段末端的垂线端点,并保存当前线段的末端垂线的端点。
4。完成整条折线后,依次连接折线同侧的保存好的点并在开始和结束的地方封闭连接,形成多边形
5。填充多边形,完成绘制
注意:当折线的转角接近180度,也就是几乎完全折回的时候,要考虑交点可能在无限远的延长线上,必要时要采取缩短交点位置的措施。另外还可以对拐角实现圆角绘制。上个图:

 
 
 
阅读(3200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~