gpt4 book ai didi

c# - 创建笛卡尔坐标系 C# Windows 窗体绘图

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:38 25 4
gpt4 key购买 nike

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

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

Idea .

目前我用Cursor.Position.XCursor.Position.Y 制作了 MouseMove 事件来显示鼠标的当前位置,并将其显示在标签中。显示的坐标是像素,怎么改?我读过一些有关使用 PointToClient 方法进行转换的内容,但我并不十分理解。

我依赖于 Windows 窗体,因为我已经在 win 窗体中制作了一个程序,现在我只想将此功能添加到其中。

谢谢

最佳答案

您最有可能寻找的是 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 等)。

关于c# - 创建笛卡尔坐标系 C# Windows 窗体绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31544195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com