2009-11-23 51 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