Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задание. Для рисования статичных рисунков используется компонент PaintBox (панель System)
Для рисования статичных рисунков используется компонент PaintBox (панель System). Этот компонент размещается на форме в виде прозрачного пунктирного квадрата, и в его пределах можно рисовать. Рисование выполняется обращением к свойству Canvas (графическая канва) этого компонента: PaintBox1.Canvas. У него в свою очередь есть свойство Pixels (PaintBox1.Canvas.Pixels), которое представляет собой матрицу, двумерный массив заданного размера - поточечный образ канвы, каждый элемент - отдельная точка. В Pixels[] отсчет точек (пикселов экрана) начинается с 0. Координаты x, y отсчитываются от верхнего левого угла, то есть он считается точкой с координатой (0, 0), увеличение по оси x идет слева направо, а по оси y - сверху вниз. Для конкретной точки указывается цвет. Функция RGB() формирует цвет комбинацией интенсивности красного, зеленого и синего (интенсивность задается числом от 0 до 255). Например, черный - RGB(0, 0, 0), красный - rgb(255, 0, 0), синий - rgb(0, 0, 255), белый -rgb(255, 255, 255). Цель работы - создать программу, выполняющую следующие действия: 1. Разместить на форме компонент PaintBox. 2. Заполнить доступную канву 300 красными точками в случайных позициях по нажатиям на некоторую кнопку. 3. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка. 4. Записать код в обработчике нажатия. Рис. 49. procedure TForm1.Button1Click(Sender: TObject); var i, x, y: Integer; begin randomize; for i: = 1 to 300 do begin x: = random(100); y: = random(100); PaintBox1.Canvas.Pixels[x, y]: = RGB(255, 0, 0); end end; 5. Изменить RGB(255, 0, 0) на RGB(random(255), random(255), random(255)). Рис. 50. 6. Заполнить фон черным цветом перед началом выполнения программы с помощью метода канвы ИПКей. Метод вызывается с указанием прямоугольной области заливки цветом: ЕП^ест.^ест.(0, 0, 100, 100)) // координаты верхнего левого и правого нижнего углов Вложенное слово Яей формирует данное типа " прямоугольник". Перед вызовом ПИЯей надо указать цвет заливки: PaintBox1.Canvas.Brush.Color: = 1ЮВ (0, 0, 0); Рис. 51. procedure TForm1.Button1Click(Sender: TObject); var i, x, y: Integer; begin PaintBox1.Canvas.Brush.Color: = RGB(0, 0, 0); PaintBox1.Canvas.FillRect(Rect(0, 0, 100, 100)); for i: = 1 to 300 do begin x: = random(100); y: = random(100); PaintBox1.Canvas.Pixels[x, y]: = RGB(random(255), random(255), random(255)); end end; 7. Заполнить канву случайными разноцветными линиями разной толщины. Линия рисуется с помощью методов (сначала задается начальная точка, потом конечная): PaintBox1.Canvas.MoveTo(10, 10); PaintBox1.Canvas.LineTo(50, 50); Цвет линии и толщина задаются свойством канвы Pen (карандаш). Pen.Color - цвет карандаша), Pen.Width - толщина линии в пикселах (по умолчанию - 1).
Рис. 52. for i: = 1 to 300 do begin PaintBox1.Canvas.Pen.Color: = RGB(random(255), random(255), random(255)); PaintBox1.Canvas.Pen.Width: = random(3)+1; x: = random(100); y: = random(100); PaintBox1.Canvas.MoveTo(x, y); x: = random(100); y: = random(100); PaintBox1.Canvas.LineTo(x, y); end 8. Заполнить канву эллипсами случайным образом (круги, окружности - частный случай эллипса). Эллипсы рисуются методом Ellipse() с четырьмя параметрами - координатами верхнего левого и правого нижнего углов прямоугольника, в который эллипс вписывается. Кайма эллипса рисуется в соответствии с параметрами свойства Pen канвы, а заливается эллипс внутри цветом кисти Brush канвы. for i: = 1 to 300 do begin // цвет и ширина каймы будущего эллипса PaintBox1.Canvas.Pen.Color: = RGB(random(255), random(255), random(255)); PaintBox1.Canvas.Pen.Width: = random(3)+1; // цвет заливки внутренности эллипса PaintBox1.Canvas.Brush.Color: = rgb(random(255), random(255), random(255)); Рис. 53. // координаты углов прямоугольника, в который вписывается эллипс x: = random(150); y: = random(150); x2: = random(150); y2: = random(150); // вписываем эллипс PaintBox1.Canvas.Ellipse(x, y, x2, y2); end; 9. Сделать канву на весь экран. Заполнить разноцветными прямоугольниками в случайных позициях и случайных размеров с помощью FillRect(). 10. Создать графический образ так называемого множества Жюлиа. procedure TForm1.Button1Click(Sender: TObject); var RE, IM, RE1, IM1: REAL; V, X, Y: INTEGER; // вывод точки заданного цвета procedure PUTPIXEL(x, y, c: Integer); var cc: TColor; begin case c mod 8 of 0: cc: =clBlack; 1: cc: =clRed; 2: cc: =clLime; 3: cc: =clYellow; 4: cc: =clBlue; 5: cc: =clFuchsia; 6: cc: =clAqua; 7: cc: =clWhite; end; PaintBox1.Canvas.Pixels[x, y]: = cc; end; procedure QWA; begin RE1: =RE*RE-IM*IM; IM1: =2*RE*IM; RE: =RE1; IM: =IM1; end; procedure KUB; begin RE1: =RE*(RE*RE-3*FM*FM); IM1: =IM*(3*RE*RE-IM*IM); RE: =RE1; IM: =IM1; end; Begin PaintBox1.Canvas.Brush.Color: = rgb(0, 0, 0); PaintBox1.Canvas.FillRect(Rect(0, 0, 640, 480)); X: =-320; REPEAT Y: =-240; REPEAT V: =0; RE: =-1.+0.001*X; IM: =0+0.001*Y; REPEAT KUB; RE: =RE+1.00003; IM: =IM+1.01828201638; if RE*RE > 50 then break; if IM*IM > 50 then break; V: =V+1; UNTIL V> 40; if (ABS(RE) > 10) or (ABS(IM) > 1000) then begin PUTPIXEL((X+320), (Y+240), TRUNC(V)); end else PUTPIXEL((X+320), (Y+240), 0); Y: =Y+1; UNTIL Y > 241; X: =X+1; UNTIL X> 320; End;
|