C#Windows窗体-图形-打印X、Y点,带+;Y
这个问题已经得到部分回答(),如果我没有找到一个简单的解决方案,我很抱歉 我需要绘制来自标准图形的X,Y图形点,其中原点(0,0)位于表单的中心,+Y坐标沿垂直方向移动。请参见随附的标准X、Y绘图图 如何重新配置窗体,使原点(0,0)位于窗体的中心而不是左上角,并且以垂直方式绘制+Y坐标?注意:我确实在尝试多边形命中测试,但在标准的X,Y绘图图中,原点位于中间,而不是像.Net Windows窗体那样位于左上角。以下是我想要的:C#Windows窗体-图形-打印X、Y点,带+;Y,c#,.net,forms,winforms,graphics,C#,.net,Forms,Winforms,Graphics,这个问题已经得到部分回答(),如果我没有找到一个简单的解决方案,我很抱歉 我需要绘制来自标准图形的X,Y图形点,其中原点(0,0)位于表单的中心,+Y坐标沿垂直方向移动。请参见随附的标准X、Y绘图图 如何重新配置窗体,使原点(0,0)位于窗体的中心而不是左上角,并且以垂直方式绘制+Y坐标?注意:我确实在尝试多边形命中测试,但在标准的X,Y绘图图中,原点位于中间,而不是像.Net Windows窗体那样位于左上角。以下是我想要的: 命中测试-我真的想在这里做一个命中测试,而不是创建一个图形,所以我
要绘制图形,请使用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());
}
}
考虑使用现有的图形库。除非您有非常独特的需求,否则您最好抓取ZedGraph的副本,而不是自己尝试这样做。
e.Graphics.TranslateTransform(this.ClientSize.Width/2,this.ClientSize.Height/2)代码>然后画出你的点。点0, 0将在中间。注意,链接帖子中所接受的答案实际上并没有显示使用TruteTror变换,尽管这是关键!