|
Новости |
Увеличение масштаба изображенияСозданием окон с различными координатами вы можете добиться эффекта увеличения масштаба графического отображения. Рассмотрим следующее предложение для рисования линии: DrawLine(0, 0, 100, 100); Если активная планета, в которой рисуется данная линия, задана следующим образом DefineWorld(1, 0, 0, 100, 100); то линия будет идти диагонально из одного угла в другой. Однако, если планета будет задана, как DefineWorld(1, 0, 0, 200, 200); то та же самая линия будет проходить половину дистанции из одного угла в другой. Графические объекты будут всегда заполнять экран в пропорции к системе координат планеты. В большей планете объект будет выглядеть меньше, а в меньшей будет выглядеть больше. Следующая программа создает эффект увеличения масштаба изоб- ражения в углу квадрата. Вывод программы показан на рис.10-6. ------------------------------------------------------- +-------------+ +-------------+ +-------------+ ¦+--+ ¦ ¦¦ ¦ +------------+ ¦+--+ +------------+ ¦ +------------+ ¦ ¦ +-----+ ¦ ¦ ¦ ¦ ¦ +------------+ +-------------¦ ¦ ¦ +------------+ ¦ +-----+ +------------+ ¦ ¦ +---------¦ ¦ ¦ ¦ ¦ +------------¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +------------+ Рис.10-6. Эффект увеличения масштаба изображения за счет ис- пользования окна program Windows; {Si typedef.sys} {Si graphix.sys} {Si kernel.sys} {Si windows.sys} var i: integer; procedure SetUpWindow; begin DefineWindow(1, 0, 0, 20, 100); DefineHeader(1, 'Sguare'); DefineWorld(1, 0, 0, 400, 400); SelectWorld(1); SelectWindow(1); SetHeaderOn; SetBackground(0); DrawBorder; DefineWindow(2, 20, 40, 40, 140); DefineHeader(2, 'Zoom in a little'); DefineWorld(2, 0, 0, 200, 200); SelectWorld(2); SekectWindow(2); SetHeaderOn; SetBackground(0); DrawBorder; DefineWindow(3, 40, 80, 60, 180); DefineHeader(3, 'Ah...much clearer'); DefineWorld(3, 0, 0, 100, 100); SekectWorld(3); SelectWindow(3); SetHeaderOn; SetBackground(0); DrawBorder; end; begin InitGraphic; SetUpWindow; {появиться для увеличения в углу} for i: = 1 to 3 do begin SelectWorld(1); SelectWindow(1); DrawSguare(10, 10, 120, 120, false); DrawLine(10, 10, 20, 20); end; repeat until KeyPressed; LeaveGraphic; end. |
(с)Все права защищеныПо всем интересующим вопросампрошу писать на электронный адрес |