2

我创建了简单的表格,现在我想在相对坐标中绘制单个对象(矩形、圆形、线条......)。我这里的主要问题是在表格中间创建二维笛卡尔坐标系。有可能吗?怎么做?

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

主意.

目前我制作了 MouseMove 事件来显示鼠标的当前位置Cursor.Position.XCursor.Position.Y并将其显示在标签中。显示的坐标是像素,如何更改?我读过一些关于用PointToClient方法转换的东西,但我不太明白。

我被绑定到 windows 窗体,因为我已经在 win 窗体中制作了一个程序,现在我只想向它添加这个功能。

谢谢

4

1 回答 1

1

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

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

您还需要确保您使用的任何绘图方法都具有PointF结构或Singles 的重载。

当然,您也可以自己处理所有这些。按表单的宽度和高度缩放输入/输出坐标,然后将其平移一半,将得到相同的结果。

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

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

于 2015-07-21T17:14:07.570 回答