我希望原点位于窗口的中心。
______________
| ^ |
| | |
| o -----> |
| |
| ____________ |
.NET希望它位于左上角。
______________>
| |
| |
| |
| |
V ____________ |
点网,我正在努力相处..
有谁知道仅使用Graphics对象就能在C#中做到这一点?
Graphics.TranslateTransform不会执行此操作,因为它会使坐标上下颠倒。组合此Graphics.ScaleTransform(1,-1)也不令人满意,因为这会使文本上下颠倒。
最佳答案
一种解决方案是使用TranslateTransform属性。然后,代替使用Point/PointF结构,您可以创建自己的FlippedPoint/FlippedPointF结构,这些结构具有对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); }
}