2017-06-04 28 views
0

我想繪製一些幾何圖形,如座標幾何。我曾經在一個panelspaint event如何轉換c#winform中Painteventargs的原點?

Graphics g = e.Graphics; 

//Transforming (0,0) origin at center of the panel 
g.TranslateTransform(panel1.Width/2, panel1.Height/2); 

// For Drawing Axes 
g.DrawLine(Pens.Red, new Point(-300, 0), new Point(300, 0)); 
g.DrawLine(Pens.Red, new Point(0,-300), new Point(0,300)); 


g.DrawEllipse(Pens.Blue, new Rectangle(50,50,100,100));// this circle should come in I-quad 

enter image description here

這裏寫下面的代碼可以理解,因爲,我的原點變換到面板的中心, 點下方的水平線爲霧化+ ve以上是-ve。同樣垂直線的點是+ ve,左邊是-ve。

我該怎麼做才能翻轉水平線,以便上面的值應該是+ ve和以下應該是-ve(在座標平面中)? 和我畫的圓應該在1象限而不是4象限。

+2

您正確標記軸,負Y軸位於控件的頂部。所有圖形軟件都將(0,0)放在左上角。回顧數十年來,與CRT的工作方式有關,電子束從左上方開始,向右移動,然後向下移動。你只是錯誤地標記了象限:)它可以通過ScaleTransform修復,但它可以更容易地適應開箱即用的方式。 –

回答

3

將以下行添加到您的轉換中。

g.ScaleTransform(1.0F, -1.0F);