Chinaunix首页 | 论坛 | 博客
  • 博客访问: 688700
  • 博文数量: 34
  • 博客积分: 4020
  • 博客等级: 上校
  • 技术积分: 367
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 16:22
文章分类

全部博文(34)

文章存档

2010年(1)

2009年(16)

2008年(9)

2007年(8)

我的朋友

分类:

2007-09-20 13:13:05

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
阅读(2811) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~