Масштабирование рисунка относительно окна - PascalABC.NET
Формулировка задачи:
вот какая проблема: нужно, чтобы при изменении размера окна ''рисунок'' должен изменяться пропорционально изменению размера окна (проще говоря, рисунок должен остаться тем же, когда изменяться аргументы в setwindowxize(a,b) ).
Листинг программы
- uses
- Graphabc;
- var
- x, y, z, k: integer;
- I: BYTE;
- begin
- setwindowsize(600, 600);
- clearwindow(clblack);
- sleep(1500);
- for i := 1 to 30 do
- begin
- setbrushcolor(clwhite);
- x := random(600) + 1;
- y := random(600) + 1;
- circle(x, y, 2) end;
- sleep(500);
- for i := 1 to 10 do
- begin
- setbrushcolor(clwhite);
- x := random(400) + 1;
- y := random(400) + 1;
- circle(x, y, 4) end;
- sleep(500);
- setbrushcolor(clblue);
- circle(100, 400, 6);
- circle(100, 500, 6);
- circle(300, 500, 6);
- circle(300, 300, 6);
- circle(450, 200, 6);
- circle(475, 100, 6);
- circle(530, 180, 6);
- circle(510, 250, 6);
- setpencolor(clblue);
- setpenwidth(4);
- sleep(1000);
- {1}line(100, 400, 100, 500);
- {2}line(100, 500, 300, 500);
- {3}line(300, 500, 300, 300);
- {4}line(300, 300, 450, 200);
- {5} line(450, 200, 475, 100);
- {6} line(450, 200, 530, 180);
- {7} line(450, 200, 510, 250);
- end.
Решение задачи: «Масштабирование рисунка относительно окна»
textual
Листинг программы
- uses
- Graphabc;
- var
- x, y, z, k: integer;
- I: BYTE;
- begin
- setwindowsize(800, 800);
- clearwindow(clblack);
- sleep(1500);
- for i := 1 to 30 do
- begin
- setbrushcolor(clwhite);
- x := random(WindowWidth) + 1;
- y := random(WindowHeight) + 1;
- circle(x, y, 2) end;
- sleep(500);
- for i := 1 to 10 do
- begin
- setbrushcolor(clwhite);
- x := random(WindowWidth div 6 * 4) + 1;
- y := random(WindowWidth div 6 * 4) + 1;
- circle(x, y, 4) end;
- sleep(500);
- setbrushcolor(clblue);
- circle(WindowWidth div 6, WindowHeight div 6 * 4, 6);
- circle(WindowWidth div 6, WindowHeight div 6 * 5, 6);
- circle(WindowWidth div 6 * 3, WindowHeight div 6 * 5, 6);
- circle(WindowWidth div 6 * 3, WindowHeight div 6 * 3, 6);
- circle(WindowWidth div 60 * 45, WindowHeight div 6 * 2, 6);
- circle(WindowWidth div 60 * 48, WindowHeight div 6, 6);
- circle(WindowWidth div 60 * 53, WindowHeight div 60 * 18, 6);
- circle(WindowWidth div 60 * 51, WindowHeight div 60 * 25, 6);
- setpencolor(clblue);
- setpenwidth(4);
- sleep(1000);
- {1}line(WindowWidth div 6, WindowHeight div 6 * 4, WindowWidth div 6, WindowHeight div 6 * 5);
- {2}line(WindowWidth div 6, WindowHeight div 6 * 5, WindowWidth div 6 * 3, WindowHeight div 6 * 5);
- {3}line(WindowWidth div 6 * 3, WindowHeight div 6 * 5, WindowWidth div 6 * 3, WindowHeight div 6 * 3);
- {4}line(WindowWidth div 6 * 3, WindowHeight div 6 * 3, WindowWidth div 60 * 45, WindowHeight div 6 * 2);
- {5}line(WindowWidth div 60 * 45, WindowHeight div 6 * 2, WindowWidth div 60 * 48, WindowHeight div 6);
- {6}line(WindowWidth div 60 * 45, WindowHeight div 6 * 2, WindowWidth div 60 * 53, WindowHeight div 60 * 18);
- {7}line(WindowWidth div 60 * 45, WindowHeight div 6 * 2, WindowWidth div 60 * 51, WindowHeight div 60 * 25);
- end.
Объяснение кода листинга программы
- Установка размера окна 800x800 пикселей
- Очистка окна черным цветом
- Задержка 1500 мс (15 секунд)
- Цикл, который выполняет 30 раз:
- Установка цвета кисти на белый
- Генерация случайных координат x и y в пределах окна
- Рисует окружность с радиусом 2 на указанных координатах
- Задержка 500 мс (5 секунд)
- Цикл, который выполняет 10 раз:
- Установка цвета кисти на белый
- Генерация случайных координат x и y в пределах окна (с шагом 6)
- Рисует окружность с радиусом 4 на указанных координатах
- Установка цвета кисти на синий
- Рисует окружность с радиусом 6 на координатах (60/60 45, 6/6 2)
- Рисует окружность с радиусом 6 на координатах (60/60 * 48, 6/6)
- Рисует окружность с радиусом 6 на координатах (60/60 53, 60/60 18)
- Рисует окружность с радиусом 6 на координатах (60/60 51, 60/60 25)
- Установка цвета кисти на синий
- Установка ширины кисти на 4
- Задержка 1000 мс (10 секунд)
- Рисует прямую линию от (6/6 4, 6/6 5) до (6/6 4, 6/6 5)
- Рисует прямую линию от (6/6 5, 6/6 5) до (6/6 3, 6/6 5)
- Рисует прямую линию от (6/6 3, 6/6 5) до (6/6 3, 6/6 3)
- Рисует прямую линию от (6/6 3, 6/6 3) до (6/6 45, 6/6 2)
- Рисует прямую линию от (60/60 45, 6/6 2) до (60/60 * 48, 6/6)
- Рисует прямую линию от (60/60 45, 6/6 2) до (60/60 53, 60/60 18)
- Рисует прямую линию от (60/60 45, 6/6 2) до (60/60 51, 60/60 25)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д