Я боролся с проблемой отсечения с окном с ненулевым началом окна , потому что я не осознавал, что 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;
из эксперимента, но незнать, какой знак использовать для области просмотра.