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

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

Графика





 

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


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


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

ПРОФЕССИОНАЛЬНОЕ САМОВОСПИТАНИЕ И САМООБРАЗОВАНИЕ ПЕДАГОГА Воспитывать сегодня подрастающее поколение на со­временном уровне требований общества нельзя без по­стоянного обновления и обогащения своего профессио­нального педагогического потенциала...

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

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

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