Рисование в Delphi. Графический режим

Автор работы: Пользователь скрыл имя, 25 Марта 2011 в 23:10, реферат

Описание работы

Работу над проектом разобьем на три этапа:

I.Нарисуем волны (в виде пикселей синего цвета) и поверхность земли (в виде зеленого прямоугольника с желтыми участками более легкой породы).
II.Заставим волны двигаться (докатываться до береговой линии).
III.Заставим волны размывать берег, уничтожая (унося в море) по одному пикселю береговой породы.

Файлы: 1 файл

risovanievdelphi.doc

— 932.00 Кб (Скачать файл)

Рисование в Delphi. Графический режим. 

Рисовать в  Delphi можно, используя канву (холст) формы:

form1. canvas         

(form1 – можно не писать).

Например, цвет заливки (кисти) можно задать так:

form1. canvas. brush. color := clRed;

Цвет линий (перо) можно задать так:

canvas. pen. color := clGreen;

Цветa можно задавать случайным образом:

canvas. brush. color := random(1000000);

Эллипс (круг) можно  нарисовать так:

canvas. еllipse(x1, y1, x2, y2);

Фигура  эллипса (круга) оказывается вписанной  в прямоугольник (квадрат) с вершинами – левой верхней x1, y1  и  правой нижней   x2, y2.

 

         

Причем координаты можно задать числами:

canvas. еllipse(100, 200, 300, 420);

переменными (см выше) и выражениями:

canvas. еllipse(х, y, x+100, y+150); 

Отсчет ведется от левого верхнего угла клиентской области формы:

 
 

 
 
 

 

Прямоугольник (квадрат) можно задать так:

canvas.Rectangle(x1, y1, x2, y2);

по координатам  двух вершин:

 

Линию можно нарисовать из текущего (последнего) положения (точки) в точку с заданными координатами x, y с помощью команды:

canvas. LineTo(x, y);

Начальной (самой первой) точкой считается  начало координат (точка  0, 0  формы).

Переместиться из текущего положения в точку  с заданными координатами  x, y , не оставляя следа, можно с помощью оператора:

canvas. MoveTo(x, y);

Залить (закрасить) замкнутую область можно  с помощью команды:

canvas. FloodFill(x, y, цвет, fsborder);

где  x, y  - координаты любой внутренней точки этой замкнутой области, цвет цвет заливки,  fsborder  - режим заливки до контура (бордюра) этой области. 

Проект 1.  Нарисовать снеговика. 

 

Процедура рисования может быть такой: 

procedure TForm1.Button1Click(Sender: TObject);

begin

canvas.Pen.Color:=claqua;

canvas.Brush.Color:=clAqua;

canvas.Ellipse(200,200,400,400);

canvas.Ellipse( . . . );

. . .

canvas.Pen.Color:=clRed;

canvas.Brush.Color:=clRed;

canvas.Rectangle(280,30,320,60);

canvas.MoveTo(260,120);

canvas.LineTo(200,100);

canvas.MoveTo(340,120);

canvas.LineTo(400,100);

  . . .

canvas.MoveTo(290,75);

canvas.LineTo(250,77);

canvas.LineTo( . . . );

  . . .

 canvas.FloodFill(285,77,clred,fsborder);

end; 

Проект 2.  Нарисовать круглую мишень. 

 

Используем оператор цикла:

for k:=1 to n do begin

  . . .

end;

где  n -  количество кругов.

Цвет зададим  случайным образом:

canvas.Brush.Color:=random(10000000);

Координаты зададим  относительно центра квадратной области, в которую вписан круг:

 
 
 
 
 

Например так:     360-r,180-r  - левая верхняя вершина,   360+r,180+r  - правая нижняя вершина квадратной области.

Здесь  r – радиус круга, который затем уменьшаем    r:=r-25;

Дополнительно:   Нарисовать квадратную мишень. 

Проект 3.  Нарисовать кучу шаров.

 

Количество шаров  зададим  300.

Радиус  r ,  координаты   x, y – зададим случайным образом:

  r:=random(100)+5;

  x:=random(200)+220;

  y:=random(100)+120;

Кроме того, нам понадобится задержка (замедление):

  for i:=1 to 10000000 do; 

Дополнительно:   сделать шары на весь экран.

Задержку (замедление) можно убрать.

 

Проект 4.  Нарисовать столбчатую диаграмму.

 

Дополнительно: над каждым столбиком вывести его размер (высоту):

Подсказка: используем процедуру  canvas. textout( x, y,  текст);  

Проект 5.  Нарисовать гирлянду.

Дополнительно: на каждом круге вывести его размер (радиус): 

Проект 6.  Летающий шарик.

Для начала пусть летает влево – вправо отражаясь от соответствующих границ формы.

В качестве шарика используем компонент  shape -  фигура (см. Вкладку палитры компонентов Дополнительно). Причем, одноименное свойство  shape в инспекторе объектов настроим на значение  stCircle окружность. 

Для движения шарика установим компонент  Timer (см. вкладку Система - часы).

Это не визуальный компонент (невидимый после  запуска).

Выполняет функцию регулярного прерывания программы через определенный интервал времени (см. свойство interval) для выполнения определенных пользователем действий (см. процедуру обработки таймера procedure TForm1.Timer1Timer(Sender: TObject);). 

Объявим глобальные переменные: 

var   x, hx: integer; 

В процедуре  FormCreate включим  таймер:

timer1.Enabled:=true;

Зададим  начальное положение шарика

x:=shape1.Left;

Шаг движения:

hx:=10;

Интервал прерывания таймера:

timer1.interval:=20; 

Двойным щелчком по часам переходим в процедуру:

procedure TForm1.Timer1Timer(Sender: TObject);

где изменяем координату :

x:=x+hx;

Проверяем границы  и меняем направление:

if (x>=536-shape1.width) or (x<=0) then hx:=-hx;

И рисуем по новым координатам (старое положение  фигуры стирается автоматически):

shape1.Left:=x;

Дополнительно1:  шарик должен летать по диагонали.

Подсказка: координату  y  определяем как  shape1.top.  

Дополнительно2:  Сделать два шарика, летающих по диагонали не зависимо друг от друга (фигуры shape1 и shape2). 

Проект 7.  Броуновское (хаотичное) движение шарика.

Выбираем случайно одно из восьми направлений: 
 
 
 
 

Для этого в  процедуре обработки события  связанного с таймером пишем: 

procedure TForm1.Timer1Timer(Sender: TObject);

var z: integer;

begin

z:= random(8);

case  z  of

0: begin  hx:= 3;  hy:= 0;  end;

1: begin  hx:= 3;  hy:= -3; end;       {оператор выбора варианта}

 2:   направление  2

3:   направление  3

         .  .  .

 end;

 x:= x + hx;

y:= y + hy;

shape1. left:= x;

 shape1. top:= y;

end;

Дополнительно1:  Сделать броуновское движение двух шариков.

Дополнительно2:  Шарик не должен выходить за пределы формы. 

Проект 8.  Цветной ковер.

Для этого в  процедуре обработки события связанного с таймером пишем:

for k:=1 to 100 do

  canvas.Pixels[random(536),random(348)]:= random(1000000); 

где  Pixels[ x, y ]  массив всех точек  (пикселей)  формы, которым присваиваем случайный цвет.

Причем  красим за один раз 100 точек (пикселей).

Цвет можно задавать изменяя случайно предел интервала:

random(random(random(1000000)));

В процедуре  FormCreate пишем:

randomize;

включаем  таймер, задаем небольшой интервал работы таймера (определяющий скорость). 

Информация о работе Рисование в Delphi. Графический режим