Учебник по Visual C++ .Net



             

Режимы отображения координат - часть 3


#define MM_HIMETRIC 3 // 1 лог. ед. - 0,01 мм

#define MM_LOENGLISH 4 // 1 лог. ед. - 0,01 дюйма

#define MM_HIENGLISH 5 // 1 лог. ед. - 0,001 дюйма

#define MMJTWIPS 6 //1 лог. ед. - 1/1440 дюйма

//========== Преобразования по формуле ==========//

#define MM_ISOTROPIC 7 // Растяжение одинаково

#define MM_ANISOTROPIC 8 // Растяжение различно

По умолчанию действует режим ММ_ТЕХТ, в котором ось Y имеет направление сверху вниз. Последующие пять режимов предполагают, что ось Y направлена снизу-вверх. В двух последних режимах преобразование координат из логической системы в физическую выполняется в соответствии с формулами, которые приведены ниже. При этом используются следующие обозначения:

  • Viewport — область вывода, задаваемая физическими координатами;
  • Window — окно, задаваемое логическими координатами.
  • Выделенные точки window и viewport совмещаются, а изображение растягивается или сжимается так, что горизонтальная координата каждой точки изображения при выводе в физическое устройство вычисляется по формуле линейного преобразования:

    Dx=Vox+(Vex/Wex)*(Lx-Wox)

    где: Dx — аппаратная (device) или физическая Х-координата точки,

    Lx - логическая (logical) Х-координата точки,

    Vex - протяженность области вывода, задаваемая SetVievvportExt,

    Wex — протяженность окна, задаваемая SetWindowExt,

    Vox — X начала координат области вывода (SetViewportOrg),

    Wox — X начала координат логического окна (SetWindowOrg).

    Аналогичная формула справедлива для Y-координаты точки. Опробуем формулу на произвольном наборе данных. (Такого типа вопросы вы можете встретить на сертификационном экзамене Microsoft.) Предположим, что в режиме MM_ANISOTROPIC заданы такие параметры отображения:

    //====== Выделенная точка в логическом окне

    pDC->SetWindowOrg (300, 0) ;

    //====== Выделенная точка в физическом окне

    pDC->SetViewportOrg (200, 200);

    //====== Протяженность логического окна pDC->SetWindowExt (100, 100);

    //====== Протяженность физического окна

    pDC->SetViewportExt (50, -200);




    Содержание  Назад  Вперед