我希望原点位于窗口的中心。
______________
| ^ |
| | |
| o----->|
| |
|____________|
.NET 希望它位于左上角。
_____________>
| |
| |
| |
| |
V____________|
点网和我正在努力相处。
有谁知道如何在 C# 中仅使用 Graphics 对象来做到这一点?
Graphics.TranslateTransform 不会执行此操作,因为它会使坐标上下翻转。组合此 Graphics.ScaleTransform(1,-1) 也不令人满意,因为这会使文本显示颠倒。
一种解决方案是使用 TranslateTransform 属性。然后,您可以创建自己的 FlippedPoint/FlippedPointF 结构,而不是使用 Point/PointF 结构,该结构具有对 Point/PointF 的隐式转换(但通过转换它们,坐标会翻转):
public struct FlippedPoint
{
public int X { get; set; }
public int Y { get; set; }
public FlippedPoint(int x, int y) : this()
{ X = x; Y = y; }
public static implicit operator Point(FlippedPoint point)
{ return new Point(-point.X, -point.Y); }
public static implicit operator FlippedPoint(Point point)
{ return new FlippedPoint(-point.X, -point.Y); }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)