Масштабирование рисунка относительно окна - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

вот какая проблема: нужно, чтобы при изменении размера окна ''рисунок'' должен изменяться пропорционально изменению размера окна (проще говоря, рисунок должен остаться тем же, когда изменяться аргументы в setwindowxize(a,b) ).
Листинг программы
  1. uses
  2. Graphabc;
  3. var
  4. x, y, z, k: integer;
  5. I: BYTE;
  6. begin
  7. setwindowsize(600, 600);
  8. clearwindow(clblack);
  9. sleep(1500);
  10. for i := 1 to 30 do
  11. begin
  12. setbrushcolor(clwhite);
  13. x := random(600) + 1;
  14. y := random(600) + 1;
  15. circle(x, y, 2) end;
  16. sleep(500);
  17. for i := 1 to 10 do
  18. begin
  19. setbrushcolor(clwhite);
  20. x := random(400) + 1;
  21. y := random(400) + 1;
  22. circle(x, y, 4) end;
  23. sleep(500);
  24. setbrushcolor(clblue);
  25. circle(100, 400, 6);
  26. circle(100, 500, 6);
  27. circle(300, 500, 6);
  28. circle(300, 300, 6);
  29. circle(450, 200, 6);
  30. circle(475, 100, 6);
  31. circle(530, 180, 6);
  32. circle(510, 250, 6);
  33. setpencolor(clblue);
  34. setpenwidth(4);
  35. sleep(1000);
  36. {1}line(100, 400, 100, 500);
  37. {2}line(100, 500, 300, 500);
  38. {3}line(300, 500, 300, 300);
  39. {4}line(300, 300, 450, 200);
  40. {5} line(450, 200, 475, 100);
  41. {6} line(450, 200, 530, 180);
  42. {7} line(450, 200, 510, 250);
  43. end.

Решение задачи: «Масштабирование рисунка относительно окна»

textual
Листинг программы
  1. uses
  2.   Graphabc;
  3.  
  4. var
  5.   x, y, z, k: integer;
  6.   I: BYTE;
  7.  
  8. begin
  9.  
  10.   setwindowsize(800, 800);
  11.   clearwindow(clblack);
  12.  
  13.   sleep(1500);
  14.   for i := 1 to 30 do
  15.   begin
  16.    
  17.     setbrushcolor(clwhite);
  18.     x := random(WindowWidth) + 1;
  19.     y := random(WindowHeight) + 1;
  20.     circle(x, y, 2) end;
  21.   sleep(500);
  22.  
  23.   for i := 1 to 10 do
  24.   begin
  25.     setbrushcolor(clwhite);
  26.     x := random(WindowWidth div 6 * 4) + 1;
  27.     y := random(WindowWidth div 6 * 4) + 1;
  28.     circle(x, y, 4) end;
  29.  
  30.   sleep(500);
  31.   setbrushcolor(clblue);
  32.  
  33.   circle(WindowWidth div 6, WindowHeight div 6 * 4, 6);
  34.   circle(WindowWidth div 6, WindowHeight div 6 * 5, 6);
  35.   circle(WindowWidth div 6 * 3, WindowHeight div 6 * 5, 6);
  36.   circle(WindowWidth div 6 * 3, WindowHeight div 6 * 3, 6);
  37.   circle(WindowWidth div 60 * 45, WindowHeight div 6 * 2, 6);
  38.   circle(WindowWidth div 60 * 48, WindowHeight div 6, 6);
  39.   circle(WindowWidth div 60 * 53, WindowHeight div 60 * 18, 6);
  40.   circle(WindowWidth div 60 * 51, WindowHeight div 60 * 25, 6);
  41.  
  42.   setpencolor(clblue);
  43.   setpenwidth(4);
  44.   sleep(1000);
  45.   {1}line(WindowWidth div 6, WindowHeight div 6 * 4, WindowWidth div 6, WindowHeight div 6 * 5);
  46.   {2}line(WindowWidth div 6, WindowHeight div 6 * 5, WindowWidth div 6 * 3, WindowHeight div 6 * 5);
  47.   {3}line(WindowWidth div 6 * 3, WindowHeight div 6 * 5, WindowWidth div 6 * 3, WindowHeight div 6 * 3);
  48.   {4}line(WindowWidth div 6 * 3, WindowHeight div 6 * 3, WindowWidth div 60 * 45, WindowHeight div 6 * 2);
  49.   {5}line(WindowWidth div 60 * 45, WindowHeight div 6 * 2, WindowWidth div 60 * 48, WindowHeight div 6);
  50.   {6}line(WindowWidth div 60 * 45, WindowHeight div 6 * 2, WindowWidth div 60 * 53, WindowHeight div 60 * 18);
  51.   {7}line(WindowWidth div 60 * 45, WindowHeight div 6 * 2, WindowWidth div 60 * 51, WindowHeight div 60 * 25);
  52. end.

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

  1. Установка размера окна 800x800 пикселей
  2. Очистка окна черным цветом
  3. Задержка 1500 мс (15 секунд)
  4. Цикл, который выполняет 30 раз:
    • Установка цвета кисти на белый
    • Генерация случайных координат x и y в пределах окна
    • Рисует окружность с радиусом 2 на указанных координатах
  5. Задержка 500 мс (5 секунд)
  6. Цикл, который выполняет 10 раз:
    • Установка цвета кисти на белый
    • Генерация случайных координат x и y в пределах окна (с шагом 6)
    • Рисует окружность с радиусом 4 на указанных координатах
  7. Установка цвета кисти на синий
  8. Рисует окружность с радиусом 6 на координатах (60/60 45, 6/6 2)
  9. Рисует окружность с радиусом 6 на координатах (60/60 * 48, 6/6)
  10. Рисует окружность с радиусом 6 на координатах (60/60 53, 60/60 18)
  11. Рисует окружность с радиусом 6 на координатах (60/60 51, 60/60 25)
  12. Установка цвета кисти на синий
  13. Установка ширины кисти на 4
  14. Задержка 1000 мс (10 секунд)
  15. Рисует прямую линию от (6/6 4, 6/6 5) до (6/6 4, 6/6 5)
  16. Рисует прямую линию от (6/6 5, 6/6 5) до (6/6 3, 6/6 5)
  17. Рисует прямую линию от (6/6 3, 6/6 5) до (6/6 3, 6/6 3)
  18. Рисует прямую линию от (6/6 3, 6/6 3) до (6/6 45, 6/6 2)
  19. Рисует прямую линию от (60/60 45, 6/6 2) до (60/60 * 48, 6/6)
  20. Рисует прямую линию от (60/60 45, 6/6 2) до (60/60 53, 60/60 18)
  21. Рисует прямую линию от (60/60 45, 6/6 2) до (60/60 51, 60/60 25)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы