1 回答

TA贡献1725条经验 获得超8个赞
不,没有办法更改绘图系统,使 0,0 不在左上角。您可以让 Graphics 应用转换(请参阅@TaW 的评论),但它有其缺点,例如渲染文本和图像颠倒,或者您可以自己对坐标执行数学转换:
Point ConvertAsIf00IsCenterAndPositiveYGoesUpwards(Point p, Rectangle r){
return new Point(r.Width/2 + p.X, r.Height/2 - p.Y);
}
您想要一条在“您的绘图系统”中从 0,0 到 100,100 的线(其中 0,0 是中心,两个轴的范围是 -100 到 +100)。
Rectangle在使用“0,0 是左上角”坐标系的 200x200画布区域 (the ) 上,您实际上想要一条从 100,100 到 200,0 的线。
此数学将您的 0,0 点转换为 100,100,将您的 100,100 点转换为 200,0。同样,对于其他点,例如 100,-100(您的右下角),它变为 200,200(绘图系统的右下角),而您的 -100,100(您的左上角)变为 0,0(绘图系统的左上角)等
Rectangle r = new Rectangle(200,200);
Point p1 = new ConvertAsIf00IsCenterAndPositiveYGoesUpwards(Point(0,0), r);
Point p2 = new ConvertAsIf00IsCenterAndPositiveYGoesUpwards(Point(100,100), r);
graphics.DrawLine(pen, p1, p2);
您可能想将该方法命名为更活泼的名称。
老实说,我想说的是,开发人员可能会发现仅习惯于左上角为 0,0 且下/右为正值的坐标系会更容易、更有效,即使这与图表有所不同他们在小学数学中习惯的系统,其中 0,0 位于中心,负数向下/向左移动,正数向上/向右移动
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报