Графика: масштабирование рисунка - Turbo Pascal
Формулировка задачи:
Помогите сделать масштабирование рисунка.
Решение задачи: «Графика: масштабирование рисунка»
textual
Листинг программы
uses crt,graph; procedure pic(xc,yc:integer;d:integer;c:integer;k:real); var r:integer; begin d:=round(d*k); r:=d div 2; setcolor(c); circle(xc-d,yc+d,r); circle(xc+d,yc-d,r); line(xc-d,yc-d,xc+d,yc+d); line(xc-d,yc-d,xc+d-r,yc-d); line(xc-d,yc-d,xc-d,yc+d-r); line(xc-d+r,yc+d,xc+d,yc+d); line(xc+d,yc+d,xc+d,yc-d+r); end; var x,y,a,d:integer; k:char; kf:real; begin initgraph(x,y,''); x:=getmaxX div 2; y:=getmaxY div 2; kf:=1; a:=50; outtextXY(x-150,20,'Dvizenie - Strelki, Uvelichenie +, Umenshenie -'); outtextXY(x-50,40,'Exit - Esc'); pic(x,y,a,10,kf); repeat if keypressed then begin k:=readkey; if k=#0 then k:=readkey; case k of #80:begin delay(100); pic(x,y,a,0,kf); if y>getmaxY-3*a/2*kf-10 then d:=0 else d:=10; y:=y+d; pic(x,y,a,10,kf); end; #72:begin delay(100); pic(x,y,a,0,kf); if y<50+3*a/2*kf+10 then d:=0 else d:=10; y:=y-d; pic(x,y,a,10,kf); end; #77:begin delay(100); pic(x,y,a,0,kf); if x>getmaxX-3*a/2*kf-10 then d:=0 else d:=10; x:=x+d; pic(x,y,a,10,kf); end; #75:begin delay(100); pic(x,y,a,0,kf); if x<3*a/2*kf+10 then d:=0 else d:=10; x:=x-d; pic(x,y,a,10,kf); end; #43:begin pic(x,y,a,0,kf); kf:=kf*1.05; pic(x,y,a,10,kf); end; #45:begin pic(x,y,a,0,kf); kf:=kf*0.95; pic(x,y,a,10,kf); end; #27:exit; end; end; until k=#27; readln end.
Объяснение кода листинга программы
- В начале программы подключаются необходимые библиотеки crt и graph.
- Создается процедура pic, которая принимает на вход координаты центра рисунка (xc,yc), масштаб (d), цвет (c) и коэффициент качества (k).
- Переменная d округляется до ближайшего целого числа, деленного на k.
- Переменная r вычисляется как половина от d.
- С помощью функции setcolor устанавливается цвет рисунка.
- Выводятся круги с радиусом r и lime (зеленым) цветом.
- Выводятся линии между кругами и их центрами.
- Завершается процедура.
- Создаются переменные x, y, a и kf.
- Инициализируется графическая система с помощью функции initgraph.
- Вычисляются координаты центра рисунка (x, y) как половина от максимальных координат.
- Выводится текст на экран с помощью функции outtextXY.
- Вызывается процедура pic с заданными параметрами.
- Если нажата клавиша, считывается ее код.
- Проверяется, была ли нажата клавиша с кодом #27.
- Если да, то программа завершается.
- Повторяется цикл, пока не будет нажата клавиша #27.
- По окончании цикла программа завершается.
- Выводится сообщение об окончании работы программы.
- Программа завершается.