SetViewportOrg与SetWindowOrg
在使用dc绘图的过程中有这么两个蛮纠结的函数。
SetViewportOrg是修改设备坐标系的原点位置
SetWindowOrg是修改逻辑坐标系的原点位置
而绘图的时候,经过了以下三个过程
(1)逻辑坐标值减去逻辑坐标原点(setWindowOrg中设置的值)
(2)上面的结果乘以比例因子变为设备坐标值
(3)上面结果加上设备坐标原点值(setViewportOrg中设置的值)然后在设备上显示。
CPaintDC dc(this); // 用于绘制的设备上下文
dc.MoveTo(0,0);
dc.LineTo(100,100); //(0,0)->(100,100)的线段
dc.SetWindowOrg(100,100);
dc.MoveTo(100,100);
dc.LineTo(200,200); //(0,0)->(100,100)的线段
dc.SetWindowOrg(0,0);
dc.MoveTo(100,100);
dc.LineTo(200,200); //(100,100)->(200,200)的线段
dc.SetWindowOrg(0,0);
dc.SetViewportOrg(100,100);
dc.MoveTo(100,100);
dc.LineTo(200,200); //(200,200)->(300,300)的线段
CDialog::OnPaint();
本文详细解析了SetViewportOrg与SetWindowOrg两个函数的区别及应用,通过实例演示了如何通过这两个函数来调整绘图坐标系的原点位置,并解释了绘图过程中涉及的坐标转换步骤。
1549

被折叠的 条评论
为什么被折叠?



