Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНДИВИД-Задания 202.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
501.25 Кб
Скачать

Графика на основе компонентов Shape

Цель работы: научить студентов использовать в практической работе графические средства Shape.

Введение

С помощью компонента TShape (страница Additional) можно создать одну из простейших графических фигур: прямоугольник, квадрат, скругленный прямоугольник, скругленный квадрат, эллипс, окружность. Вид фигуры задается свойством Shape := (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle). Исходно фигура создается в виде прямоугольника (stRectangle), а далее она в процессе создания проекта (т.е. вручную) или программно преобразуется в нужную фигуру. Пространство формы является практически бесконечным, посему можно создавать фигуры больше экрана или располагать на расстояниях, превышающих экран. При уходе части фигуры за край формы она возвращается на место без регенерации

Контур фигуры чертится инструментом Pen (карандаш), а заполнение производится инструментом Brush (кисть). У кисти есть свойство Color, предполагающее 49 вариантов реализации, и свойство Style, включающее 8 вариантов штриховки фона фигуры. По умолчанию установлен вариант bsSolid (сплошная заливка). Вариант bsClear предполагает прозрачный фон, т.е. фигура представлена только контуром.

У инструмента Pen тоже есть свойство Color, предполагающее 49 вариантов, и свойство Mode, включающее 16 вариантов. Последнее свойство задает режим рисования:

 pmBlack - рисование всегда только черным цветом независимо от параметра Color;

 pmWhite - рисование всегда только белым цветом независимо от параметра Color;

 pmNotCopy - рисование всегда только инверсным по отношению к Color цветом и т.д.

Также у этого инструмента есть и свойство Style, устанавливающее стиль контура:

 psClear - нет контура;

 psSolid - сплошная линия ;

 psDash - линия - - -;

 psDashDot - линия -  -  - и т.д.

У карандаша также есть свойство Width (толщина линии в пикселях).

Все рассмотренные свойства компонента TShape также можно менять и программно.

При наложении фигур они располагаются по глубине экрана в порядке их создания.

Простейший пример работы с фигурами - при каждом нажатии кнопки фигура Shape1 смещается на один пиксель вправо:

procedure TForm1.Button1Click(Sender: TObject);

begin

Shape1.Left := Shape1.Left + 1;

end;

При создании динамического изображения всегда требуется также механизм управления временем. Таким в системе в Delphi является компонент TTimer (страница System). Он невидим во время выполнения программы, поэтому может располагаться в процессе проектирования на любом месте формы.

У данного компонента два значимых свойства и один метод:

- свойство Enabled: boolean, которое запускает/останавливает таймер. Исходно (при запуске программы) Enabled = true;

- свойство Interval: integer, которое задает интервалы времени между очередными срабатываниями таймера. Исходно (по умолчанию) Interval = 1000 млс, т.е. 1 с.

- метод OnTimer, запускаемый при каждом срабатывании таймера.

Например, перемещение фигуры Shape1 под управлением таймера программируется следующей процедурой:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Shape1.Left := Shape1.Left + 1;

end;

Выполнение лабораторной работы

I. В соответствии с заданием выбрать вариант реализации программного проекта. Во всех вариантах задания рамка создается как компонент Shape.

  1. На пространстве формы изображен календарь за январь текущего года с горизонтальным расположением недель. Рамка красного цвета в виде квадрата с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.4 сек. Запуск движения – кнопка «Пуск», остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  2. На пространстве формы изображен календарь за февраль текущего года с горизонтальным расположением недель. Рамка черного цвета в виде квадрата с закругленными углами и толщиной линии в 2 пикселя движется по датам с дискретом времени 0.5 сек. Запуск движения – контекстное меню, остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  3. На пространстве формы изображен календарь за март текущего года с горизонтальным расположением недель. Рамка синего цвета в виде окружности с толщиной линии в 3 пикселя движется по датам с дискретом времени 0.6 сек. Запуск движения – кнопка «Пуск», остановка - контекстное меню, что приводит к установке рамки на первую дату.

  4. На пространстве формы изображен календарь за апрель текущего года с горизонтальным расположением недель. Рамка зеленого цвета в виде квадрата с толщиной линии в 2 пикселя движется по датам с дискретом времени 0.7 сек. Запуск движения – кнопка «Пуск», остановка – главное меню, что приводит к установке рамки на первую дату.

  5. На пространстве формы изображен календарь за май текущего года с горизонтальным расположением недель. Рамка красного цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.4 сек. Запуск движения – главное меню, остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  6. На пространстве формы изображен календарь за июнь текущего года с горизонтальным расположением недель. Рамка черного цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.5 сек. Запуск движения и остановка движения – команды главного меню, что приводит к установке рамки на первую дату.

  7. На пространстве формы изображен календарь за июль текущего года с горизонтальным расположением недель. Рамка зеленого цвета в виде квадрата с толщиной линии в 2 пикселя движется по датам с дискретом времени 0.6 сек. Запуск движения и остановка движения – команды контекстного меню, что приводит к установке рамки на первую дату.

  8. На пространстве формы изображен календарь за август текущего года с горизонтальным расположением недель. Рамка синего цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.7 сек. Запуск движения – кнопка «Пуск», остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  9. На пространстве формы изображен календарь за сентябрь текущего года с горизонтальным расположением недель. Рамка красного цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.8 сек. Запуск движения – кнопка «Пуск», остановка – команда главного меню, что приводит к установке рамки на первую дату.

  10. На пространстве формы изображен календарь за октябрь текущего года с горизонтальным расположением недель. Рамка черного цвета в виде квадрата с толщиной линии в 2 пикселя движется по датам с дискретом времени 0.4 сек. Запуск движения – команда главного меню, остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  11. На пространстве формы изображен календарь за ноябрь текущего года с горизонтальным расположением недель. Рамка зеленого цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.5 сек. Запуск движения – кнопка «Пуск», остановка – команда контекстного меню, что приводит к установке рамки на первую дату.

  12. На пространстве формы изображен календарь за декабрь текущего года с горизонтальным расположением недель. Рамка синего цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.6 сек. Запуск движения – команда контекстного меню, остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  13. На пространстве формы изображен календарь за январь текущего года с вертикальным расположением недель. Рамка красного цвета в виде квадрата с толщиной линии в 2 пикселя движется по датам с дискретом времени 0.7 сек. Запуск движения и остановка движения – команды контекстного меню, что приводит к установке рамки на первую дату.

  14. На пространстве формы изображен календарь за февраль текущего года с вертикальным расположением недель. Рамка черного цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.8 сек. Запуск движения – команда главного меню, остановка – команда контекстного меню, что приводит к установке рамки на первую дату.

  15. На пространстве формы изображен календарь за март текущего года с вертикальным расположением недель. Рамка зеленого цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.4 сек. Запуск движения – команда контекстного меню, остановка – команда главного меню, что приводит к установке рамки на первую дату.

  16. На пространстве формы изображен календарь за апрель текущего года с вертикальным расположением недель. Рамка синего цвета в виде квадрата с толщиной линии в 2 пиксель движется по датам с дискретом времени 0.5 сек. Запуск движения – кнопка «Пуск», остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  17. На пространстве формы изображен календарь за май текущего года с вертикальным расположением недель. Рамка красного цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.6 сек. Запуск движения – кнопка «Пуск», остановка – команда главного меню, что приводит к установке рамки на первую дату.

  18. На пространстве формы изображен календарь за июнь текущего года с вертикальным расположением недель. Рамка черного цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.7 сек. Запуск движения – команда главного меню, остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  19. На пространстве формы изображен календарь за июль текущего года с вертикальным расположением недель. Рамка зеленого цвета в виде квадрата с толщиной линии в 2 пикселя движется по датам с дискретом времени 0.8 сек. Запуск движения – команды главного меню, что приводит к установке рамки на первую дату.

  20. На пространстве формы изображен календарь за август текущего года с вертикальным расположением недель. Рамка синего цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.4 сек. Запуск движения – кнопка «Пуск», остановка – команда контекстного меню, что приводит к установке рамки на первую дату.

  21. На пространстве формы изображен календарь за сентябрь текущего года с вертикальным расположением недель. Рамка красного цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.5 сек. Запуск движения – команда контекстного меню, остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  22. На пространстве формы изображен календарь за октябрь текущего года с вертикальным расположением недель. Рамка черного цвета в виде квадрата с толщиной линии в 2 пикселя движется по датам с дискретом времени 0.6 сек. Запуск движения и остановка движения – команды контекстного меню, что приводит к установке рамки на первую дату.

  23. На пространстве формы изображен календарь за ноябрь текущего года с вертикальным расположением недель. Рамка зеленого цвета в виде квадрата с закругленными углами и толщиной линии в 3 пикселя движется по датам с дискретом времени 0.7 сек. Запуск движения – кнопка «Пуск», остановка – кнопка «Стоп», что приводит к установке рамки на первую дату.

  24. На пространстве формы изображен календарь за декабрь текущего года с вертикальным расположением недель. Рамка синего цвета в виде окружности с толщиной линии в 1 пиксель движется по датам с дискретом времени 0.8 сек. Запуск движения – кнопка «Пуск», остановка – команда главного меню, что приводит к установке рамки на первую дату.

  25. На пространстве формы изображена шахматная доска. Шашка красного цвета движется по периметру доски по часовой стрелке с дискретом 0.8 сек. Запуск движения – команда главного меню, остановка – кнопка «Пуск», что приводит к установке шашки на левую верхнюю клетку.

  26. На пространстве формы изображена шахматная доска. Шашка синего цвета движется по периметру доски против часовой стрелки с дискретом 0.4 сек. Запуск и остановка движения – команды главного меню, что приводит к установке шашки на правую верхнюю клетку.

  27. На пространстве формы изображена шахматная доска. Шашка зеленого цвета движется по главной диагонали доски взад-вперед с дискретом 0.5 сек. Запуск движения – команда контекстного меню, остановка – кнопка «Стоп», что приводит к установке шашки на правую нижнюю клетку.

  28. На пространстве формы изображена шахматная доска. Шашка желтого цвета движется по вспомогательной диагонали доски с дискретом 0.6 сек. Запуск движения – кнопка «Пуск», остановка – команда главного меню, что приводит к установке шашки на левую нижнюю клетку.

  29. На пространстве формы изображен квадрат размером 250х250. По часовой стрелке по периметру движется окружность диаметром 40 пикселей По верхней стороне движение идет со скоростью 200/сек. Далее на каждой стороне скорость уменьшается в два раза. Запуск движения – команда главного меню, остановка – кнопка «Пуск», что приводит к установке окружности в левый верхний угол квадрата.

  30. На пространстве формы изображена окружность диаметром 300 пикселей. По ней против часовой стрелки движется окружность диаметром 40 пикселей со скоростью100/сек. Запуск и остановка движения – команды главного меню, что приводит к установке малой окружности в верхнюю точку большой окружности.

  31. Н а пространстве формы изображена фигура размером 150х300 пикселей. В исходном состоянии в центре фигуры находится окружность диаметром 30 пикселей. При запуске она совершает движение по периметру левого или правого квадратов. Выбор квадрата производится радионабором. По левому квадрату окружность движется против часовой стрелки со скоростью 100/сек, по правому - по часовой стрелке два раза медленней. Запуск движения – команда контекстного меню, остановка – кнопка «Стоп», что приводит к установке окружности в исходное состояние.

  32. На пространстве формы изображена окружность диаметром 350 пикселей. Внутри ее, касаясь контура, по часовой стрелки движется окружность диаметром 40 пикселей со скоростью200/сек. Окружности разного цвета и толщины. Запуск движения – кнопка «Пуск», остановка – команда главного меню, что приводит к установке малой окружности в самое верхнее положение.

  33. На пространстве формы изображен прямоугольник размером 250х300. Внутри его, касаясь контура, против часовой стрелки движется квадрат 30х30 пикселей со скоростью 200/сек. При смене направления меняется цвет квадрата. Запуск и остановка движения – команды главного меню, что приводит к установке квадрата в левый верхний угол.

  34. Н а пространстве формы изображена шахматная доска. Шашка коричневого цвета движется по - образной траектории с дискретом 0.4 сек. Запуск движения – кнопка «Пуск», остановка – команда главного меню, что приводит к установке шашки на левую нижнюю клетку. Начальное движение - вверх вправо.

  35. На пространстве формы находится квадрат со стороной 150 пикселей, в который вписана окружность. При запуске программы радиус окружности уменьшается со скоростью 5 пикселей/сек (с дискретом 1 пиксель), а квадрат с удвоенной скорость увеличивается. Когда окружность достигает минимального диаметра, начинается обратный процесс. При изменении направления цвет закраски окружности меняется. Запуск программы и ее остановка - контекстное меню.

  36. Исходно на форме слева находится квадрат со стороной 150 пикселей. Он двигается по форме слева направо и наоборот со скоростью 20 пикселей/сек. Длина перемещения 500 пикселей. Внутри квадрата с удвоенной скоростью двигается слева направо окружность диаметром 50 пикселей.

Содержание отчета:

  1. Задание на выполнение лабораторной работы;

  2. Структура проекта;

  3. Листинг программы.

Контрольные вопросы

1) Можно ли на основе компоненты Shape синтезировать треугольник?

2) Можно ли задать для таймера временной интервал меньше 1 млс?

3) Как сделать фигуру Shape прозрачной?

4) Сколько методов у таймера?

5) Каким инструментом рисуется контур фигуры Shape?