DrawLine的行为是否可以使用超出范围的参数进行预测?

时间:2013-03-28 21:40:23

标签: c# visual-c#-express-2010

DrawLine可以处理定义区域之外的坐标吗?

例如myGraphics.DrawLine(MyPen, -20, -80, 20, 90);

我希望这能正确生成一条线,好像它使用了无限画布但只绘制了我图形中的部分。

我的代码如下。我正在从数据库中记录的坐标绘制运动。有时,主题移动超出预期,超出了我位图的边缘。我没有检查这个事件,因为我依靠DrawLine来处理它。

Bitmap Border = new Bitmap(5000, 5000);
Border.SetResolution(254, 254);

Graphics MyGraphics= Graphics.FromImage(Border);
Pen MyPen = new Pen(Color.Black, 1);


for (Int32 Point = 1; Point <= Points; Point++)
{
   XCoord2 = XCoord1;
   YCoord2 = YCoord1;
   XCoord1 = *READ FROM DATABASE*
   YCoord1 = *READ FROM DATABASE*

   if (Point > 1)
   {
        MyGraphics.DrawLine(MyPen, XCoord1, YCoord1, XCoord2, YCoord2);
   }
}

实际上,我的情节大部分时间都在工作。但是我偶尔会得到缺少线条的图形或者来自奇怪坐标的模糊线条。

总之,DrawLine的行为是否可以使用异常参数进行预测。我应该引入一些三角函数来强制图总是在我的网格内吗?

2 个答案:

答案 0 :(得分:0)

实际限制是十亿正面或负面看到过去的问题(使用.net)

What are the hard bounds for drawing coordinates in GDI+?

我的猜测是你的数据库拉错了,如果你使用字符串数据存储并强制解析它,就会发生这种情况。

添加一个thread.sleep()并让Debug.WriteLine新拉(或只是断点的东西),可能是一个值奇怪或被奇怪地解析的值

答案 1 :(得分:0)

经过更多的实验,我终于用...修复了我的问题。

SolidBrush WhiteBrush = new SolidBrush(Color.White);
myGraphics.FillRectangle(WhiteBrush,0,0,5000,5000);

即。在绘制任何线条之前,我给了我的图形一个坚实的白色背景。在我在NULL背景上绘制黑线之前。我不知道为什么这会影响任何事情,但确实如此!