Графика: масштабирование рисунка - 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.

Объяснение кода листинга программы

  1. В начале программы подключаются необходимые библиотеки crt и graph.
  2. Создается процедура pic, которая принимает на вход координаты центра рисунка (xc,yc), масштаб (d), цвет (c) и коэффициент качества (k).
  3. Переменная d округляется до ближайшего целого числа, деленного на k.
  4. Переменная r вычисляется как половина от d.
  5. С помощью функции setcolor устанавливается цвет рисунка.
  6. Выводятся круги с радиусом r и lime (зеленым) цветом.
  7. Выводятся линии между кругами и их центрами.
  8. Завершается процедура.
  9. Создаются переменные x, y, a и kf.
  10. Инициализируется графическая система с помощью функции initgraph.
  11. Вычисляются координаты центра рисунка (x, y) как половина от максимальных координат.
  12. Выводится текст на экран с помощью функции outtextXY.
  13. Вызывается процедура pic с заданными параметрами.
  14. Если нажата клавиша, считывается ее код.
  15. Проверяется, была ли нажата клавиша с кодом #27.
  16. Если да, то программа завершается.
  17. Повторяется цикл, пока не будет нажата клавиша #27.
  18. По окончании цикла программа завершается.
  19. Выводится сообщение об окончании работы программы.
  20. Программа завершается.

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы