逻辑单元到设备单元

时间:2012-03-04 21:45:58

标签: windows api gdi

我一直在努力解决带有非零窗口原点的窗口的剪辑问题,因为我没有意识到SelectClipRgn需要设备单元。

因此我确定了视口原点和窗口原点如下......

POINT VP_Org, WN_Org;
GetViewportOrgEx (dc, VP_Org);
GerWindowOrgEx (dc, WM_Org);

我在逻辑坐标中有一个裁剪区域R,如何将R转换为设备单位以用于定义裁剪区域?

换句话说,我如何转换R以便以下工作。

RECT R;
ClipRgn = CreateRectRgn (R.left, R.top, R.right, R.bottom)
SelectClipRgn (dc, ClipRgn)

我知道它看起来像

R.top = R.top - WN_Org.y +- VP_Org.y;

来自实验,但不知道用于视口的标志。

1 个答案:

答案 0 :(得分:2)

您可以使用LPtoDP功能:

  

LPtoDP功能将逻辑坐标转换为设备   坐标。转换取决于设备的映射模式   上下文,窗口和窗口的起源和范围的设置   视口和世界转型。