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