Масштабирование рисунка относительно окна - PascalABC.NET
Формулировка задачи:
вот какая проблема: нужно, чтобы при изменении размера окна ''рисунок'' должен изменяться пропорционально изменению размера окна (проще говоря, рисунок должен остаться тем же, когда изменяться аргументы в setwindowxize(a,b) ).
Решение задачи: «Масштабирование рисунка относительно окна»
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)