Окт 13

Функции мировых преобразований в Win32 API (Windows NT/2000)

По умолчанию контекст устройства работает в так называемом совместимом режиме. При этом имеется в виду совместимость с 16-разрядной семантикой GDI. В совместимом режиме мировые координаты не поддерживаются, а единственной логической системой координат является страничная система. Для использования мировой системы координат приложение должно переключить контекст устройства в графический режим вызовом функции SetGraphicsMode (hDC, GM_ADVANCED). В результате вызова будет обеспечена поддержка двух уровней логического координатного пространства — мировых и страничных координат, а также матрицы преобразования. Чтобы вернуться к совместимому режиму работы, следует заполнить матрицу данными тождественного преобразования и вызвать функцию SetGraphicsMode(hDC, GM_C0MPATIBLE). Кроме того, можно воспользоваться функциями SaveDC и RestoreDC.
В контексте устройства преобразование из мировых координат в страничные по умолчанию инициализируется тождественной матрицей. Для изменения текущего преобразования используются следующие функции:
BOOL SetWorldTransformCHDC hDC. CONST XFORM lpXform);
BOOL ModifyWorldTransform(HDC hDC. CONST XFORM lpXform. DWORD iMode):
Функция SetWorldTransform просто заменяет атрибут преобразования в контексте устройства новым преобразованием, заданным структурой XF0RM.
При вызове функции ModifyWorldTransform параметр iMode может принимать одно из трех предопределенных значений:
MTW_IDENTIFY — преобразование приводится к тождественной форме;
MTW_LEFTMULTIPLY — текущее преобразование умножается на матрицу параметра IpXform слева;
MTW_RIGHTMULTIPLY — текущее преобразование умножается на матрицу параметра IpXform справа.
Для получения информации о текущем преобразовании используется функция GetWorldTransform.