Практична робота № 30 рисунок

Мета роботи - створити програму, що виводить на форму наведений нижче малюнок. При натисканні на клавішу "Промені" відбувається зміна напрямку променів. Змінити програму так, щоб промені змінювали напрямки без натискання клавіші.

Практична робота № 30 рисунок

1. Додайте в форму компоненти Image і Button.

2. Створіть обробник події натискання. Найважливішим властивістю компонента Image є властивість Canvas: TCanvas (полотно). Це властивість саме є об'єктом. У Canvas є методи і властивості. Це властивості і методи малювання на полотні.

• Pen: Tpen (перо): малювання ліній, меж фігур і т.п. виробляється пером. Найважливіші властивості пера - Color: Tcolor (колір), Width: Integer (ширина), Style: TpenStyle (стиль).

• Brush: Tbrush (кисть): зафарбування фігур, заднього фону написів і т. П. Виробляється пензлем. Найважливіші властивості кисті - Color: Tcolor (колір), Style: TbrushStyle (стиль).

• Font: Tfont (шрифт): написи на полотні виконуються з урахуванням значень його властивості Font. При цьому задній фон за написом закрашивается поточним значенням кисті. Для того щоб зафарбовування не було, потрібно встановити прозорий стиль кисті: Brush.Style: = bsClear, але потім не забудьте зробити кисть непрозорою: Brush.Style: = bsSolid, інакше фігури, які ви будете надалі малювати, теж виявляться незафарбованими. Найважливіші властивості шрифту - Name: string (ім'я), Size: Integer (розмір), Color: Tcolor (колір). Ви також використовували два методи полотна:

• Rectangle (X1, Y1, X2, Y2: Integer) (прямокутник): малює прямокутник, зафарбовуючи його пензлем і обводячи пером (в нашому випадку, для того щоб рамки не було видно, ми зробили колір кисті і пера однаковим). Як параметри задаються координати верхнього лівого X1, Y1 і нижнього правого X2, Y2 кутів щодо верхнього лівого кута полотна.

• TextOut (X, Y: Integer; const Text: string) (вивести текст): малює текст відповідно до заданого шрифту і зафарбовуючи задній фон згідно заданої кисті (в нашому випадку ця зафарбування непомітна, оскільки текст малюється на тому ж фоні, що і поточний значення кисті). Як параметри задаються координати верхнього лівого кута тексту X, Y щодо верхнього лівого кута полотна і текст напису Text.

3. Намалюйте градиентно закрашене синє небо окремими лініями, кожну наступну лінію малюючи світлішою. Таким чином, малювання виконується в циклі. Необхідно визначити локальну змінну. У циклі змінюються значення кольорів, встановлюється перо в точку і чертится лінія з цієї точки в іншу.

• LineTo (X, Y: Integer) (креслити лінію): креслить лінію з точки, в якій знаходилося перо, в точку X, Y, використовуючи поточний перо. При цьому перо теж переміщається в цю точку.

Місцезнаходження пера зберігається у властивості полотна PenPos: Tpoint. Запис в цю змінну повністю еквівалентна викликом методу MoveTo. Колір можна задавати, використовуючи константи кольору clBlack, clNavy, clGreen і т.д. - повний список констант знаходиться в списку, що випадає властивості Color в інспектор об'єктів. Колір також можна задати, використовуючи функцію RGB (Red, Green, Blue: byte), в параметрах Red, Green і Blue вказуються значення інтенсивності червоного, зеленого і синього компоненти кольору (від 0 до 255 кожна).

4. Додати на небо сонце. Намалювати еліпс з лініями-променями. Промені намалювати випадковим чином, для цього необхідно використовувати генератор випадкових чисел.

• Кола і еліпси малюються за допомогою методу полотна Ellipse (X1, Y1, X2, Y2: Integer). Як і прямокутник, еліпс закрашивается поточної пензлем і обводиться поточним пером. Як параметри X1, Y1, X2, Y2 необхідно вказати лівий верхній і нижній правий кути прямокутника, в який "вписаний" еліпс. Якщо Y2 - Y1 = X2 -X1 (тобто прямокутник є квадратом), еліпс малюється як коло.

• Датчик випадкових чисел - функція random видає число типу double в діапазоні від 0

6. Зберегти картинку в файл.

7. Додати в форму ще один Image, клацнути по ньому мишкою і завантажити в нього картинку. Зробити його прозорим можна, встановивши властивість Transparent. Оскільки він допоміжний, краще, щоб він не був видний під час роботи програми, тому вимкніть йому властивість Visible.

8. Додати компонент Timer. Встановіть його інтервал 100.

9. На вкладці подій Інспектори Об'єктів навпаки події OnTimer в випадаючому списку виберіть ім'я обробника події Button1Click. Таким чином встановлюється вже існуючий обробник для ще однієї події.

10. У програмі кожні сто мілісекунд буде викликатися подія і відбуватися перерисовка картинки, як якщо б ми натискали кожен раз кнопку. Уповільнити інтервал між перемальовуванням картинки можна, збільшивши інтервал таймера.

ImageA.Canvas.Draw (X, Y, ImageB.Picture.Bitmap)

При цьому все, що намальовано на ImageB, буде скопійовано на ImageA. Якщо ImageB.Transparent = true, то картинка копіюється з прозорим фоном. Замість ImageA і ImageB відповідно підставте потрібні вам імена компонентів, які фігурують у вашій програмі:

Image1.Canvas.Draw (130 + random (2), 20 + random (2), Image2.Picture.Bitmap); Image1.Canvas.Draw (100 + random (2), 50 + random (2), Image2.Picture.Bitmap); Image1.Canvas.Draw (170 + random (2), 80 + random (2), Image2.Picture.Bitmap); Таким чином, для малювання можна використовувати будь-які картинки з файлу - хмари, будиночки, персонажів, логотипи і т. П.

Схожі статті