C# 世界坐标 页面坐标 PageUnit PageScale

PageScale:  获取或设置此 Graphics 的世界单位和页单位之间的比例。
PageUnit:  获取或设置用于此 Graphics 中的页坐标的度量单位。

话不多说,上代码:

        private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics dc = e.Graphics;
dc.PageUnit = GraphicsUnit.Pixel; // 页面坐标
dc.PageScale = 0.5f; // 世界坐标和页面坐标比例系数 Pen p = new Pen(Color.Red); int startX = ;
int startY = ;
Point startPoint = new Point(startX, startY); for (int i = ; i < ; ++i)
{
dc.DrawLine(p, startPoint, new Point(startX + i, startY));
}
}

再上图:

C# 世界坐标 页面坐标 PageUnit PageScaleC# 世界坐标 页面坐标 PageUnit PageScaleC# 世界坐标 页面坐标 PageUnit PageScale

PageScale = 0.5             PageScale = 1                                     PageScale = 2

由上可见,PageUnit = GraphicsUnit.Pixel,即显示的时候以像素为单位,程序画了 100 个坐标位置

PageScale = 1, 一个坐标位置对应一个像素,所以线的长度显示为100个像素

PageScale = 0.5,一个坐标对应0.5个像素,所以线的长度显示为50个像素

PageScale = 2,一个坐标对应2个像素,所以线的长度显示为200个像素(超出窗口大小了:D),上图可见线的宽度也变为2个像素了

综上:    页面坐标 = 世界坐标 * PageScale!!!   我理解的世界坐标即逻辑坐标,页面坐标即物理坐标或叫做设备坐标!

上一篇:深入理解java回调机制


下一篇:LeetCode130:Surrounded Regions