DelphiComponent.ru - бесплатно видеоуроки по Delphi, статьи, исходники

Свойства карандаша в Delphi

Теперь давайте напишем пример, в котором увидим свойства карандаша в дей­ствии. Создайте новое приложение. Создайте обработчик события OnPaint и напи­шите в нем код, представленный в листинге:

//Рисуем psDash линию

Canvas.MoveTo(10,140);

Canvas.LineTo(200,140);

end;

Результат работы программы вы можете увидеть на рис.

В данном примере по событию onPaint (когда надо перерисовать форму) пооче­редно рисуются линии разного стиля. Для этого сначала выбирается нужный стиль (например, Canvas.Pen.Style:=psSolid выбирает стиль сплошной линии).

Потом перемещается карандаш в точку начала линии—canvas.MoveTo(х, y). Meтод MoveTo перемещает карандаш в позицию, указанную в качестве параметров х и у. При перемещении не происходит ника­кого рисования на холсте (canvas), х и y—это не сантиметры и не миллиметры, а количество пикселов (количество экранных точек).

Отсчет координаты х идет слева. Это значит, что левая сторона окна равна нуле­вой позиции х, а правая сторона окна—это максимальное значение. Но это не оз­начает, что х не может быть отрицательным или больше максимума. Вы без про­блем можете указывать любые значения, только нужно учитывать, что часть линии может уйти за пределы окна.

Отсчет координаты y идет сверху. Верхнее обрамление окна является нулевой точкой y. При этом заголовок окна (с названием формы и системными кнопками) не входит в пространство клиентской области окна.

Теперь мы должны нарисовать линию с помощью метода LineTo (х, y). В каче­стве параметров передаются конечные координаты линии. Отрезок будет нарисо­ван, начиная от текущей позиции карандаша, куда мы перешли с помощью метода MoveTo, и до координат, указанных при вызове метода LineTo.

После прорисовки первой линии выбираем следующий стиль и перемещаемся в позицию на 20 пикселов ниже уже нарисованной линии. После этого рисуем сле­дующую линию.

Теперь добавим в нашу программу возможность смены цвета карандаша. Для этого установим на форму кнопку с надписью "Изменить цвет" и компонент coiorDialog с вкладки Dialogs. Компонент coiorDialog предназначен для отобра­жения стандартного диалога выбора цвета. На форме он будет выглядеть в качестве простого квадратика с пиктограммой и при запуске не будет виден.

Для события onclick кнопки напишем следующий код:

if ColorDialogl.Execute then

Canvas.Pen.Color:=ColorDialogl.Color;

В первой строке кода отображается окно выбора цвета (ColorDialog1. Execute). Если пользователь выбрал цвет и не нажал ОК (нажал отмену или нажал кнопку крестика в заголовке), то окно возвращает значение false. Поэтому мы проверяем, если результат показа окна равен true, то изменить цвет:

if ColorDialogl.Execute then Изменить цвет холста

Напоминаю, что по умолчанию конструкция if проверяет указанный код на ра­венство true, если не указано обратное. В связи с этим эту же конструкцию можно было бы записать так:

if ColorDialogl.Execute=true then Изменить цвет холста

Результат выбранного цвета записывается в свойство color компонента ColorDialogl. Именно его мы и присваиваем цвету карандаша canvas.Pen.color. После этого нужно только перерисовать рисунок. Для этого явно вызывается про­цедура— обработчик события OnPaint формы. У нас обработчик называется FormPaint, именно его и необходимо вызывать.

Можете запустить программу и проверить результат работы смены цветов линий.

Теперь добавим возможность выбора толщины линии. Для этого установим компонент upDown с вкладки Win32. Для события onclick этого компонента напи­шем следующий код:

begin

Canvas.Pen.Width:=UpDownl.Position;

Компонент upDown состоит из двух кнопок. Верхняя кнопка увеличивает внут­ренний счетчик. Нижняя — уменьшает. Текущее значение счетчика можно прочи­тать в свойстве Position. Именно это значение мы и присваиваем в свойство ши­рины карандаша Canvas. Pen. Width.

Источник: delphicomponent.ru

Категория: Программное обеспечение

Похожие статьи: