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

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

Графика





 

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




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Предпосылки, условия и движущие силы психического развития Предпосылки –это факторы. Факторы психического развития –это ведущие детерминанты развития чел. К ним относят: среду...

Анализ микросреды предприятия Анализ микросреды направлен на анализ состояния тех со­ставляющих внешней среды, с которыми предприятие нахо­дится в непосредственном взаимодействии...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

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