创建笛卡尔坐标系c#windows窗体绘图

时间:2015-07-21 16:06:35

标签: c# winforms drawing cartesian-coordinates

我创建了简单的表单,现在我想在相对坐标中绘制单个对象(矩形,圆形,线条......)。 这里的主要问题是在表格中间创建2D笛卡尔坐标系。是否可能以及如何做???

主要问题是如何有效地将绝对坐标转换为相对坐标?如何创建我自己的系统,以便得到数字结果(负数,正数取决于象限)而不是像素?

Idea

目前,我制作了MouseMove事件,以Cursor.Position.XCursor.Position.Y显示鼠标的当前位置,并将其显示在标签中。显示的坐标是像素,如何改变?我已经阅读了有关使用PointToClient方法转换的内容,但我并不理解它。

我与Windows窗体绑定因为我已经在win表单中创建了一个程序,现在我只想添加此功能。

由于

1 个答案:

答案 0 :(得分:0)

您最有可能寻找的是Graphics.TranslateTransformGraphics.ScaleTransform

private void Transform(PaintEventArgs e)
{
    e.Graphics.ScaleTransform(width, height);
    e.Graphics.TranslateTransform(xOffset, yOffset);
}

您还需要确保您使用的任何绘图方法都会导致PointF结构或Single的重载。

当然,您也可以在最后处理所有这些问题。通过表单的宽度和高度缩放输入/输出坐标,然后将其翻译一半将得到相同的结果。

编辑 - 为了增加一些清晰度,Windows总是希望您的坐标是像素形式。您可以使用上述转换以不同的比例进行工作,然后转换为Windows期望的表单。

设置翻译应该很简单。如果你想要表格的中间部分,你只想翻译宽度的一半和高度的一半。如何选择缩放坐标将取决于您需要使用的范围(即-1.0到1.0,-0.5到0.5等)。