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

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

Графика





 

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




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


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

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

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

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