发现GDI+的一个BUG

2940阅读 0评论2007-09-20 jtkk
分类:

1、在开发“可视化SQL语句生成器”的过程中,发现GDI+的一个BUG
 
只要执行下面的代码,就会在gp.Widen语句处抛出OutOfMemory的异常:
 

float x1 = 1.0f, y1 = 10.0f;
float x2 = 1.0f, y2 = 10.0f;
GraphicsPath gp = new GraphicsPath();
gp.AddLine(new PointF(x1, y1), new PointF(x2, y2));
gp.Widen(new Pen(Color.Black, 1));
gp.Dispose();

2、总结

调用AddLine方法时,如果线段的起点和终点相同,就会出现此问题。

3、解决办法

调用AddLine方法前,检测有没有起点和终点相同的情况,若有,则给其中一个增加微小的偏移量。如:

if (x1 == x2)
    x2 += 0.001f;

 
 
环境:
.NET Framework Version:2.0.50727
VS2005 sp1 日文版
 
修订:
2007/12/19:
无意中又发现了一个,并通过了测试:
http://www.cnblogs.com/LoveShrek/archive/2007/04/12/710701.html
上一篇:删除重名的货品名,只保留一条
下一篇:Debian中ADSL拨号的设置