2017-06-04 184 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);