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 = 100; int startY = 100; Point startPoint = new Point(startX, startY); for (int i = 0; i < 100; ++i) { dc.DrawLine(p, startPoint, new Point(startX + i, startY)); } }
再上图:
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!!! 我理解的世界坐标即逻辑坐标,页面坐标即物理坐标或叫做设备坐标!