GDI+ Bug! GraphicsPath Pen描绘小转角变形问题,高手进

nodman 2008-07-15 06:59:21
我在工作中用GDI+描绘带状图形

当用较宽的Pen描绘GraphicsPath的时候,
如果拐弯处较急,就是说拐弯处的长度很短的时候,
边缘变形严重,有没有人遇到过类似问题?


图片可以看这里:
http://cid-9b77dc7951857956.spaces.live.com/default.aspx

蓝色的是有问题的例子,红色的是为了看的清楚我另外构造的分离形状。
代码如下:
(蓝色、红色图片,可以通过切换注释(1)/(2)取得)


protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
GraphicsPath gp = new GraphicsPath();
const int width = 100;
Point[] pt = { new Point(300,300), new Point(100,100), new Point(110,80) };
Pen p = new Pen(Color.FromArgb(0x80, Color.Navy), width);
Pen p1 = new Pen(Color.FromArgb(0x80, Color.Red), width);
Pen p2 = new Pen(Color.Black);
Pen p3 = new Pen(Color.FromArgb(0x80, Color.Black), 8);
//using(p)
{
p3.EndCap = LineCap.ArrowAnchor;
p.LineJoin = LineJoin.Round;
gp.AddLines(pt);

g.DrawLine(p3, pt[0], pt[1]);
g.DrawLine(p3, pt[1], pt[2]);
g.DrawRectangle(p2, pt[0].X, pt[0].Y, 2, 2);
g.DrawRectangle(p2, pt[1].X, pt[1].Y, 2, 2);
g.DrawRectangle(p2, pt[2].X, pt[2].Y, 2, 2);

// (1)
g.DrawLine(p1, pt[0], pt[1]);
g.DrawLine(p1, pt[1], pt[2]);
// (2)
//g.DrawPath(p, gp);
}
//base.OnPaint(e);
}
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
周公 2008-08-08
  • 打赏
  • 举报
回复
Pen的宽度引起的吧?
LQknife 2008-08-07
  • 打赏
  • 举报
回复
不是高手也进来顶了
pp_shy 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zlkingdom 的回复:]
问题主要还是出在你PEN的宽度上,如果将宽度变窄以后你会看到一个正常的图形。
[/Quote]
zlkingdom 2008-07-29
  • 打赏
  • 举报
回复
问题主要还是出在你PEN的宽度上,如果将宽度变窄以后你会看到一个正常的图形。
yilunduyue 2008-07-15
  • 打赏
  • 举报
回复
帮顶!!!

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧