Анизотропный режим MM_ANIISOTROPIC
В изотропном режиме отображения Windows всегда преобразует протяженности области вывода и логического окна таким образом, чтобы они имели одинаковое выражение в физических единицах измерения. В анизотропном режиме Windows такого преобразования не выполняет. Другими словами, в режиме MM_ANIISOTROPIC операционная система не создает правильного коэффициента сжатия. Как следствие изменение протяженности области вывода приводит к сжатию или растяжению соответствующей стороны логического окна, что искажает изображение.
На рис. 10.16 приведены формы с изображенным на них эллипсом в режиме MM_ANISOTROPIC. Нетрудно заметить, что эллипс приобретает очертания правильного круга только в случае равенства сторон области вывода.
varDC : hDC;
Begin
DC:=Form1.Canvas.Handle;
SetMapMode(DC, MM_ANISOTROPIC);
{определяем логическое окно с протяженностью сторон по 11 единиц}
SetWindowExtEx(DC, 10, 10, nil);
{под область вывода отводим всю клиентскую часть формы}
SetViewportExtEx(DC, Form1.ClientWidth, –Form1.ClientHeight, nil);
{переносим начало координат в центр}
SetWindowOrgEx(DC,-5,5,nil);
Ellipse(DC,-4,-4,4,4); //эллипс
end;
Резюме
Мы познакомились с основными графическими объектами VCL Delphi, основу которых составляет класс TCanvas, инкапсулирующий практически все методы из состава GDI Windows. Богатые функциональные возможности холста позволяют программисту обеспечивать вывод текста, управлять шрифтами, цветом и палитрами, рисовать простейшие геометрические фигуры, отображать битовые образы и работать с метафайлами. Мы рассмотрели ряд компонентов Delphi, специализирующихся на обслуживании графики. В частности это элементы управления TPaintBox, TShape, TBevel, TImage и TAnimate.
В дополнение ко всему мы научились работать с графикой при помощи методов Win32 API, получили представление о дескрипторе контекста устройства и приобрели опыт настройки режимов отображения и систем координат.
Дата добавления: 2016-03-15; просмотров: 737;