Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Delphi. Уроки


Информационный Канал Subscribe.Ru

Delphi. Библиотека VCL. Уроки по программированию с сайта http://progs.biz

Рассылка №15

Delphi. VCL. Урок 29. Рисуем на форме.
Delphi. VCL. Урок 30. Класс TBrush.

Полные версии уроков (с картинками) можно найти по адресам
Урок 29. Рисуем на форме.
Урок 30. Класс TBrush.

Изучаем Delphi. Библиотека VCL. Урок 29. Рисуем на форме

Рисование на форме (как, впрочем, и на многих других объектах) происходит через контекст устройства (холст). Этот объект появляется в виде подсказки после точки при наборе программы.

К этому объекту (Canvas) мы можем припысывать разные другие объекты, в частности кисть (TBrush), перо (TPen) и шрифт (TFont). Кроме того, на холсте (Canvas) мы можем использовать картинку (TBitmap). Эти объекты будут рассмотрены подробнее в следующих уроках.

Так как при рисовании нам постоянно придется использовать конструкции вида

...
  Form1.Canvas...
 ...

то лучше эту часть вынести за скобки с помощью with:

  ...
  with Form1.Canvas do
  begin
    ...
  end;
  ...

Между begin и end мы как раз и будем рисовать. Куда поместь весь этот код, зависит от задачи. Можно написать его в обработчике нажатия какой-нибудь кнопки или еще где-нибудь, где вам надо. Мы же поместим его в обработчик FormPaint для нашей формы. Логично это сделать потому, что, в частности, это событие возникает и при создании формы. Кроме того, если окно нашей формы будет закрыто другим окном, а потом снова окажеться видимым, то код FormPaint также будет выполнятся, так что мы остановимся именно на этом обработчике.

Давайте для начала нарисум кружок желтого цвета:

procedure TForm1.FormPaint(Sender: TObject);
begin
  with Form1.Canvas do
  begin
    //Задаем кисть желтого цвета
    Brush.Color:=RGB(255, 255, 0);
    //Рисуем круг
    Ellipse(10, 10, 30, 30);
  end;
end;

В результате мы получим на форме кружок желтого цвета.

Аналогичным образом можно нарисовать прямоугольник (используем Square), напечатать некой текст (TextOut) или вывести еще какие-нибудь примитивы.

Для рисования линий используются методы LineTo и MoveTo. Первый из них рисует отрезок, второй - просто передвигает точку рисования. Вот пример их использования:

  ...
  //Передвигаем перо в точку (10, 10)
  Form1.Canvas.MoveTo(10, 10);
  //Рисуем три линии
  Form1.Canvas.LineTo(30, 70);
  Form1.Canvas.LineTo(80, 40);
  Form1.Canvas.LineTo(10, 10);
  ...

В результате на форме нарисуется треугольник.

Тот же результат можно получить и через метод Polygon. Он в качестве параметра берет массив точек (вершин):

var
  points: Array [1..3] of TPoint;
  ...
  points[1].X:=10; points[1].Y:=10;
  points[2].X:=30; points[2].Y:=70;
  points[3].X:=80; points[3].Y:=40;
  Form1.Canvas.Polygon(points);
  ...

В приведеном примере треугольник не закрашивается. Для его закраски (а также любой фигуры) используется метод FloodFill. Он закрашивает область текущей кистью, начиная с точки, передаваемой в него в качестве параметра.

  ...
  //Берем кисть красного цвета
  Form1.Canvas.Brush.Color:=RGB(255, 0, 0);
  //Закрашиваем
  Form1.Canvas.FloodFill(12, 12, RGB(0, 0, 0), fsBorder);
  ...

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

Результатом нашего кода будет закрашенный в красный цвет треугольник (нарисованный в предыдущем примере).

Кроме линий, можно выводить и отдельные точки. Вот пример:

  ...
  //Выводим точку красного цвета
  Form1.Canvas.Pixels[9, 9]:=RGB(255, 0, 0);
  ...

Вообще говоря, рисовать можно не только на форме. Но об этом как-нибудь в следующий раз.

Наверх

Изучаем Delphi. Библиотека VCL. Урок 30. Класс TBrush

На прошлом занятии мы рассматривали объект Canvas, на котором происходит рисование. К этому объекту можно, в частности, приписать кисть.

Одно из свойств кисти мы уже знаем - это Color. Тут ничего хитрого нет - для приписывания к кисти определенного цвета используем функцию RGB (см. предыдущий урок). Следующее свойство - это style. Оно определяет способ закрашивания. Возможные значения - это bsSolid (сплошная кисть), bsHorizontal и (горизонтальные и вертикальные полоски соответственно), bsFDiagonal и bsBDiagonal (наклонные вправо или слево полосы соответственно) и другие. Тут тоже ичего хитрого нет - присваиваем соответствующее значение и любуемся на результат.

Кроме закрашивания сплошной кистью можно закрашивать некоторой картинкой. За это отвечает свойство Bitmap для нашей кисти. Если вы используете свойство Bitmap, то свойства Color и Style игнорируются. Вот пример применения этого свойства:

...
var
  Bitmap: TBitmap; //Заводим переменную для картинки
begin
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile('1.bmp'); //Загружаем картинку из файла
  Form1.Canvas.Brush.Bitmap:=Bitmap; //Присваиваем Bitmap к холсту
  Form1.Canvas.Ellipse(10, 10, 60, 60); //Рисуем нашей кистью
end;

Этот код можно поместить, например, в обработчик для кнопки. И в результате на форме появится эллипс, "закрашенный" нашей картинкой.

Разумеется, файл 1.bmp должен существовать (в той же папке, что и exe-файл).

Наверх

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное