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

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

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

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

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

Файлы: 1 файл

risovanievdelphi.doc

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

Проект 9.  Броуновское (хаотичное) движение точки (пикселя), оставляющей след (траекторию). 

 
 

Можно обойтись без  case  z  of , если задать смещение точки так:

dx:= random(3) – 1;

dy:= random(3) – 1;

Очевидно  будет выбрано одно из восьми направлений, т.к.  выпадает случайно   -1,  0,  1.

Координаты зададим в процедуре FormCreate ,  двигать точку будем в процедуре Timer1Timer. 

Проект 10.  Броуновское (хаотичное) движение N точек (пикселей), оставляющих след (траекторию). 

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

  x[k], y[k]   координаты   k – ой точки,  c[k]  цвет   k – ой точки. 

При этом массивы надо объявить глобальные (перед Implementation):

Const N = 100;

Var  x, y, с:  array[1 . . N] of integer;

и присвоить (в процедуре FormCreate):

  for k:=1 to N do begin

  x[k];= random(536);

  y[k]:= random(348);

  c[k]:= random(random(random(1000000)));

  canvas.Pixels[x[k], y[k]]:= c[k];

end;

В итоге  можно получить такую картинку:

 
 

Проект 11.  Снег.

Необходимо  использовать массив координат, один цвет и пять направлений движения снежинок: 
 
 

x[k], y[k]   координаты   k – ой точки.

В процедуре FormCreate зададим значения этих координат случайным образом:

  randomize;

  timer1.Enabled:=true;

  for k:=1 to n do

   begin

    x[k]:=random(500)+20;

    y[k]:=random(70)+50;

   end; 

В процедуре FormPaint нарисуем снежинки и поверхность земли:

  canvas.Pen.Color:=claqua;

  canvas.Brush.Color:=claqua;

  canvas.Rectangle(0,320,535,330);

  for k:=1 to n do

   canvas.Pixels[x[k],y[k]]:=clred; 

В процедуре  обработки таймера находим новые значения координат:

x1:=x[k]+dx; y1:=y[k]+dy; 

Рисуем  снежинку по новым координатам (x1,y1) и стираем ее по старым координатам (x[k],y[k]):

canvas.Pixels[x1,y1]:=clred;

canvas.Pixels[x[k],y[k]]:=clbtnface; 

Если  снежинка долетает до поверхности – взамен нее выпускаем новую.

x[k]:=random(500)+20;

y[k]:=50;

Не забудем  изменить (присвоить) текущие значения координат на новые:

x[k]:=x1;

y[k]:=y1;

 

Дополнительно:  Снег должен накапливаться в сугробы:

 
 
 
 
 
 
 
 
 

Заставим  снежинки накапливаться в сугробы (снежный покров).

Для этого  будем предварительно проверять  цвет пикселя в той точке, в  которую собираемся переместить  снежинку, т.е. в точке с новыми координатами (x1,y1). 

    Если  впереди препятствие  определенного  цвета (поверхность земли, а затем и упавший снег), то снежинка останавливается. При этом она меняет свой цвет, что позволяет летящим снежинкам прилипать к уже упавшим, образуя, таким образом, сугроб (снежный покров):

if canvas.pixels[x1,y1]<>claqua then

       begin

        canvas.Pixels[x1,y1]:=clred;

        canvas.Pixels[x[k],y[k]]:=clbtnface;

        x[k]:=x1;y[k]:=y1;

       end

                 else

        begin

          canvas.pixels[x[k],y[k]]:=claqua;

          x[k]:=random(500)+20;

          y[k]:=50;

        end; 

Проект 12.  Дымоход.

Нарисовать две наклонные линии стенок трубы (наклонные для скорости засорения трубы). Запустить снизу частички сажи и ждать когда засорится труба. 

Проект 13.  Электролиз.

 
 
 
 
 

Нарисовать  в центре формы шар (катод).  

Запустить с четырех сторон ионы (частички) и ждать когда они налипнут на шар.

Для того, чтобы частички летели с разных сторон необходимо задать четыре пары массивов координат:

x[k], y[k]   координаты   k – ой точки, летящей слева.

x1[k], y1[k]   координаты   k – ой точки, летящей сверху.

x2[k], y2[k]   координаты   k – ой точки, летящей справа.

x3[k], y3[k]   координаты   k – ой точки, летящей снизу. 

Проект 14.  Берег.

    Программа моделирует морские волны, которые размывают берег, изменяя рельеф береговой линии, в зависимости от твердости породы. 

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

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

В итоге  мы можем получить картинки следующего вида:

 

И через  некоторое время: 

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