Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Графика





 

Для рисования статичных рисунков используется компонент 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. Записать код в обработчике нажатия.


 

 

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)).

 

 

 


6. Заполнить фон черным цветом перед началом выполнения программы с помощью метода канвы FillRect. Метод вызывается с указанием прямоугольной области заливки цветом: FillRect(Rect(0, 0, 100, 100)) // координаты верхнего левого и правого нижнего углов

Вложенное слово Rect формирует данное типа "прямоугольник". Перед вызовом FillRect надо указать цвет заливки: PaintBox1.Canvas.Brush.Color:= RGB(0,0,0);

 

 


 

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).

 

 


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));

// координаты углов прямоугольника, в который вписывается эллипс
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*IM*IM);
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;
E nd;

 

 








Дата добавления: 2015-09-04; просмотров: 408. Нарушение авторских прав; Мы поможем в написании вашей работы!




Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

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

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Studopedia.info - Студопедия - 2014-2026 год . (0.014 сек.) русская версия | украинская версия