Первый пример работы с графикой в Delphi

 

 

Первый пример работы с графикой в DelphiДавайте попробуем написать простейший пример, в котором будет рисоваться обычный квадрат. Но для усложнения задачи квадрат будем рисовать не на форме, а внутри компонента TPaintBox, который очень хорошо подходит для этих целей.

 

Создайте новое приложение и поместите на него компонент PaintBox с вкладки System палитры компонентов. Постарайтесь разместить этот компонент в нижней половине окна.

У формы и у PaintBox есть свойство canvas, значит, на них можно рисовать. Ри­сование лучше всего производить по событию onPaint, которое также есть у обоих компонентов. Итак, создадим обработчик события OnPaint для формы и напишем тут следующее:

Canvas.Rectangle(10,10,100,100);

Здесь мы вызываем метод Rectangle объекта canvas нашей главной формы. У этого метода четыре параметра.

  1. Левая позиция квадрата.
  2. Верхняя позиция квадрата.
  3. Правая позиция.
  4. Нижняя позиция.

Теперь выделите компонент PaintBox и создайте такой же обработчик события OnPaint для этого компонента. В нем напишите следующее: PaintBoxl.Canvas.Rectangle(10,10,100,100);

Здесь вызывается тот же метод с такими же параметрами, только для PaintBox. Это значит, что этот квадрат будет рисоваться уже внутри компонента PaintBox.

 

Попробуйте запустить приложение, и вы увидите два квадрата (рис. 12.2). Оба они рисуются с помощью метода Rectangle с одними и теми же параметрами и, по идее, должны быть нарисованы в одном и том же месте. Но в реальности это не так, потому что первый квадрат рисуется на форме, и координаты его отсчитыва- ются относительно формы (10, 0, 100, 100), а второй— внутри компонента, и координаты его отсчитываются от- носительно этого компонента (10, 0, 100, 100).

 

Почему в примере рисование про­исходит именно в обработчике собы­тия OnPaint? Просто событие генери­руется каждый раз, когда нужно приложение и поместите код рисования квадрата в обработчик события Onshow. В лучшем случае вы увидите квадрат, но если свернуть окно или просто перекрыть другим и потом снова открыть его, то квадрат исчезнет.

 

СОВЕТ. Windows не запоминает графику, которая была в окне и полагается на вашу программу. Единственное, что делает ОС— направляет программе событие Paint (WM_PAINT), которое указывает на необходимость самостоятельной перерисовки со­держимого окна. Именно поэтому желательно производить рисование в обработчике OnPaint или хотя бы вызывать в нем функцию, которая будет восстанавливать необ­ходимую графику в окне.

dle

Помоги проекту! Расскажи друзьям об этом сайте: