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!!!   我理解的世界坐标即逻辑坐标,页面坐标即物理坐标或叫做设备坐标!

 

posted @ 2015-11-21 20:35  BornThisWay  阅读(1354)  评论(1编辑  收藏  举报