0

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 的行为应该可以用不寻常的参数来预测。我应该引入一些三角函数来强制绘图始终在我的网格内吗?

4

2 回答 2

0

实际限制是十亿个正数或负数,请参阅这个过去的问题(使用 .net )

在 GDI+ 中绘制坐标的硬边界是什么?

我的猜测是您的数据库拉取错误,如果您使用字符串数据存储并强制对其进行解析,则可能会发生这种情况。

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

于 2013-03-28T21:50:42.630 回答
0

经过更多的实验,我终于解决了我的问题......

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

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

于 2013-03-29T13:46:03.467 回答