Помощь в написании студенческих работ
Антистрессовый сервис

Графика. 
Программирование: delphi

РефератПомощь в написанииУзнать стоимостьмоей работы

Координаты х, у отсчитываются от верхнего левого угла, то есть он считается точкой с координатами (0, 0), увеличение по оси х идет слева направо, а по оси у — сверху вниз. Для конкретной точки указывается цвет. Функция RGB () формирует цвет комбинацией интенсивности красного, зеленого и синего (интенсивность задается числом от 0 до 255). Например, черный — RGB (0, 0, 0), красный — RGB (255, 0… Читать ещё >

Графика. Программирование: delphi (реферат, курсовая, диплом, контрольная)

Для рисования статичных рисунков используется компонент PaintBox (панель System). Этот компонент размещается на форме в виде прозрачного пунктирного квадрата, и в его пределах можно рисовать. Рисование выполняется обращением к свойству Canvas (графическая канва или холст) этого компонента: PaintBoxl.Canvas. У него в свою очередь есть свойство Pixels (PaintBoxl.Canvas.Pixels), которое представляет собой матрицу, двумерный массив заданного размера — поточечный образ канвы, каждый элемент — отдельная точка. В Pixels [] отсчет точек (пикселов экрана) начинается с 0.

Координаты х, у отсчитываются от верхнего левого угла, то есть он считается точкой с координатами (0, 0), увеличение по оси х идет слева направо, а по оси у — сверху вниз. Для конкретной точки указывается цвет. Функция RGB () формирует цвет комбинацией интенсивности красного, зеленого и синего (интенсивность задается числом от 0 до 255). Например, черный — RGB (0, 0, 0), красный — RGB (255, 0, 0), синий — RGB (0, 0, 255), белый — RGB (255, 255, 255).

Свойство Canvas есть у многих визуальных объектов, в том числе у Формы, следовательно, можно рисовать и непосредственно на форме.

Для рисования Canvas содержит множество графических примитивов, которые рисуются методами, принадлежащими холсту:

  • • Arc — дуга;
  • • Ellipse — закрашенный эллипс или окружность;
  • • FillRect — закрашенный прямоугольник;
  • • LineTo — провести линию в заданную точку;
  • • MoveTo — перейти в заданную точку;
  • • Rectangle — прямоугольная рамка;
  • • TextOut — вывод текста.

Цель работы — создать программу, заполняющую доступную канву различными способами.

  • 1. Разместить на форме компонент PaintBox.
  • 2. Заполнить доступную канву 300 красными точками в случайных позициях по нажатиям на некоторую кнопку.
Заполнение канвы красным цветом случайным образом.

Рис. 73. Заполнение канвы красным цветом случайным образом

  • 3. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.
  • 4. Записать код в обработчике нажатия, procedure TForml. ButtonlClick (Sender: TObject);

var i, x, y: Integer; begin

randomize;

for i := 1 to 300 do begin

x := random (100); у := random (100);

PaintBoxl.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)) // координаты верхнего левого.

// и правого нижнего углов.

Заполнение канвы случайным образом.

Рис. 74. Заполнение канвы случайным образом

Вложенное слово Rect формирует данное типа «прямоугольник». Перед вызовом FillRect надо указать цвет заливки:

PaintBoxl.Canvas.Brush.Color := RGB (0, 0, 0);

Фон канвы.

Рис. 75. Фон канвы

procedure TForml. ButtonlClick (Sender: TObject); var

i, x, y: Integer; begin

PaintBoxl.Canvas.Brush.Color := RGB (0, 0, 0); PaintBoxl. Canvas. FillRect (Rect (0, 0, 100, 100));

for i := 1 to 300 do begin

x := random (100);

у := random (100);

PaintBoxl.Canvas.Pixels[x, y] :=.

RGB (random (255)j random (255), random (255));

end

end;

7. Заполнить канву случайными разноцветными линиями разной толщины. Линия рисуется с помощью методов (сначала задается начальная точка, потом конечная):

PaintBoxl.Canvas.MoveTo (10,10);

PaintBoxl.Canvas.LineTo (50,50);

Цвет линии и толщина задаются свойством канвы Реп (карандаш). Pen. Color — цвет карандаша, Pen. Width — толщина линии в пикселах (по умолчанию — 1).

Заполнение канвы линиями.

Рис. 76. Заполнение канвы линиями

for i := 1 to 300 do begin

PaintBoxl.Canvas.Pen.Color :=.

RGB (random (255), random (255), random (255)); PaintBoxl.Canvas.Pen.Width := random (3) + 1; x := random (100); у := random (100);

PaintBoxl.Canvas.MoveTo (x, y); x := random (100); у := random (100);

PaintBoxl.Canvas.LineTo (x, y); end.

8. Заполнить канву эллипсами случайным образом (круги, окружности — частный случай эллипса). Эллипсы рисуются методом Ellipse () с четырьмя параметрами — координатами верхнего левого и правого нижнего углов прямоугольника, в который эллипс вписывается. Граница эллипса рисуется в соответствии с параметрами свойства Реп канвы, а заливается эллипс внутри цветом кисти Brush канвы.

Заполнение канвы эллипсами.

Рис. 77. Заполнение канвы эллипсами

for i := 1 to 300 do begin

// цвет и ширина каймы будущего эллипса PaintBoxl.Canvas.Pen.Color :=.

RGB (random (255), random (255), random (255));

PaintBoxl.Canvas.Pen.Width := random (3) + 1;

// цвет заливки внутренности эллипса PaintBoxl.Canvas.Brush.Color :=.

RGB (random (255), random (255), random (255));

// координаты углов прямоугольника, в который вписывается эллипс х := random (150); у := random (150); х2 := random (150); у2 := random (150);

// вписываем эллипс

PaintBoxl.Canvas.Ellipse (x, у, х2, у2); end;

  • 9. Сделать канву на весь экран. Заполнить разноцветными прямоугольниками в случайных позициях и случайных размеров с помощью FillRectO.
  • 10. Создать графический образ так называемого множества Жюлиа.

procedure TForml. ButtonlClick (Sender: TObject); var

RE, IM, RE1, IM1: REAL;

V, X, Y: INTEGER;

// вывод точки заданного цвета procedure PUTPIXEL (X, Y, с: 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;

PaintBoxl.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

PaintBoxl.Canvas.Brush.Color := rgb (0j 0, 0); PaintBoxl.Canvas.FillRect (Rect (0j 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.3;

IM := IM + 1.1 828 201 638;

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;

End;

Показать весь текст
Заполнить форму текущей работой