Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

If ColorDialog1.Execute then

Графические возможности Delphi. | Свойства Карандаша | Рисуем psInsideFrame линию |


Canvas.Pen.Color:=ColorDialog1.Color;

FormPaint(nil);

В первой строке я отображаю окно выбора цвета (ColorDialog1.Execute). Если

пользователь выбрал цвет, а не нажал «Отмена», то окно возвращает значение true,

поэтому я проверяю, если результат показа окна равен true, то изменить цвет:

If ColorDialog1.Execute then

Изменить цвет холста

Напоминаю, что по умолчанию конструкция if проверяет указанный код на

равенство true если не указано обратное. Поэтому эту же конструкцию можно было бы

записать так:

if ColorDialog1.Execute=true then

Изменить цвет холста

Результат выбранного цвета записывается в свойство Color компонента

ColorDialog1. Именно его мы и присваиваем цвету карандаша Canvas.Pen.Color. После

этого нужно только перерисовать рисунок. Для этого я явно вызываю процедуру

обработчик события OnPaint формы. У нас обработчик называется FormPaint, именно его

я и вызываю.

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

Задание №3.

Работаем со снежинкой. Нужно сделать так, что бы при выборе определенного цвета, она его меняла J.

№4.

Теперь добавим возможность выбора толщины линии. Для этого бросим компонент

UpDown с закладки Win32. По событию OnClick по этому компоненту напишем

следующий код:

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

Begin

Canvas.Pen.Width:=UpDown1.Position;

Repaint;

end;

Напоминаю, что компонент UpDown состоит из двух кнопок – верхняя увеличивает

внутренний счётчик, а нижняя уменьшает. Текущее значение счётчика можно прочитать в

свойстве Position. Именно это значение я и присваиваю в свойство ширины карандаша

Canvas.Pen.Width.

После этого я вызываю метод главной формы Repaint. Этот метод генерирует событие о том, что надо перерисовать содержимое окна. Это значит, что будет автоматически вызван обработчик события OnPaint. Результат – тот же, что и просто вызов напрямую обработчика, как мы это делали после смены цвета, но такой способ считается более правильным. Я в своих программах пользуюсь обоими способами, и отдать предпочтение одному из них не могу. Если говорить о том, какой способ более правильный, то оба они работают без проблем, просто второй способ более эстетичный и красивый, хотя и требует дополнительных затрат на генерацию сообщения о необходимости перерисовать окно.

 


Дата добавления: 2015-08-17; просмотров: 66 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Задание №2.| Задание №4.

mybiblioteka.su - 2015-2024 год. (0.005 сек.)