2009-11-23 48 views
4

我有一个Point变量的数组。当使用Graphics.DrawLine绘制时,它们会创建预期图像。我的问题是0,0实际上是图像的中心(不是我的画布左上角的预期,我的X和Y坐标在点中可以包含负数使用偏移将点绘制到画布上?

当我试图将此绘制到我的Image,当然我得到总图像的四分之一,因为其余部分是绘制在画布的边界之外。如何将此绘图正确地居中在画布上?

我知道图像的尺寸画画。我知道在哪里0,0(宽度/ 2,高度/ 2)。

我想我能翻译每一个Point,但是,似乎是艰难地做到这一点。

回答

3

如果在绘图处理程序中设置转换,TranslateTransform()可以为您绘制坐标。

Graphics.TranslateTransform @ MSDN

或者,通过将宽度的一半和期望的观看区域的每个坐标一半高度映射您坐标。

另外,您可能需要缩放坐标。您可以使用Graphics.ScaleTransform来执行此操作。

Graphics.ScaleTransform @ MSDN

如果你不想使用它,那么你应该除以X坐标由你想伸展宽度的百分比量,并除以Y上的百分比量坐标要伸展高度。这给我们1 100%,1.2 120%,0.8 80%等。

+0

+1:我用过很多次Graphics类,经常做一些手动盘区计算等,甚至没有意识到这些方法是可用的。非常非常有用。 – Ian 2010-06-14 12:17:35

0

创建数组时,为每个x值添加一个等于宽度一半的偏移量和一个等于高度一半的偏移量。这样当点被绘制时,它们处于预期的位置。

1

欢迎来到Windows版本的Cartessian Plane。你最后的陈述是正确的。你必须抵消每一点。你可以给自己的唯一真正的帮助是使偏移逻辑成为清理主要绘图代码的单独方法。

+0

TranslateTransform()不能帮助在这种情况下?谢谢 – GDIHelp 2009-11-23 19:46:07