这个问题已得到部分回答(Make +y UP, Move Origin C# System.Drawing.Graphics),如果我还没有能够在SO上找到一个简单的解决方案,我道歉。
我需要绘制来自标准图形的X,Y图形点,其中原点(0,0)位于表格的中心,+ Y坐标沿垂直方向移动。请参见标准X,Y图表的附图。
如何重新配置表单,以使原点(0,0)位于表格的中心而不是左上角,+ Y坐标以垂直方式绘制?注意:我真的尝试进行多边形命中测试,但是在标准的X,Y图表中,原点位于中心,而不是像.Net Windows Forms那样的左上角。这就是我的意思我想:
答案 0 :(得分:1)
要绘制图表,请使用TranslateTransform:
protected override void OnPaint(PaintEventArgs e) {
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.TranslateTransform(this.ClientSize.Width / 2, this.ClientSize.Height / 2);
e.Graphics.FillEllipse(Brushes.Red, new Rectangle(-3, -3, 6, 6));
}
对于命中测试,您还可以使用TranslateTransform和TransformPoints调用:
protected override void OnMouseDown(MouseEventArgs e) {
using (Graphics g = this.CreateGraphics()) {
g.TranslateTransform(this.ClientSize.Width / 2, this.ClientSize.Height / 2);
Point[] points = new Point[] { e.Location };
g.TransformPoints(CoordinateSpace.World, CoordinateSpace.Device, points);
MessageBox.Show(points[0].ToString());
}
}