Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

11.4. Рисование

Составим программу для рисования мышкой при нажатой ле­вой кнопке мышки на форме Form2 (Экран художника) (рис. 11.4.1). Управ­ле­ние рисованием задается на формеForm1 (Управление рисова­ни­ем). Сти­ра­ние линии ри­сун­ка произво­дит­ся рисованием линии цветом фона второй формы при нажатой правой кнопке мыши

Цвет карандаша или экрана для рисования устанавливается щелчком мышки по текстовому полю Text1 (свойство Text=””), которое находится правее текста “Цвет”. Переключатели Option1 (Value=True) и Option2 устанав­лива­ют режим настройки цвета карандаша или второй формы соот­ветствен­но. Установка цвета осуществляется диалогом цветовой настрой­ки (п. 8.4.4) (кнопкаДиалог) или интенсивностью по трем его ком­­по­нентам: красного, зеленого и сине­го цветов. Интенсивность задается числом от 0 до 255. Ин­тен­сивность красного цвета задается гори­зонталь­ной полосой прокрутки HScroll1 (п. 6.13) со свой­ствами: Min=0, Max=255, LargeChange=20, SmallChange=4. Интенсивность зеленого цвета задается ползунком Slider1 (п. 6.14) со свойствами: Min=0, Max=255, Large­Chan­ge=20, SmallChange=4, BorderStyle=0 (без рамки), Orientation=0 (гори­зон­тальная), TickStyle=0 (шкала под ползунком), TickFrequency=20 (размер одного деления шкалы). Интенсивность синего цвета задается значением текстового поля Text2 (Text=””). Для ввода значения в это поле может использоваться кнопка-счетчик UpDown1 (п. 6.18) со свойствами: Min=0, Max=255, Increment=4, Auto­Bud­dy=True, SyncBuddy=True, BuddyCon­trol=Text2, BuddyProper­ty=Text. Ширина выводимой линии задается значением текстового поля Text3 (Text=1). Для ввода значения в это поле может использоваться кноп­ка-счет­чик UpDown2 (п. 6.1) со свойствами: Min=1, Max=255, Incre­ment=1,Auto­Bud­dy=True,SyncBuddy=True,Buddy­Control=Text3,Buddy­Proper­ty=Text. Разместим объектCommonDialog(п.8.4.4) и семь кнопок:Отк­рыть (загрузка существующего рисунка (п. 8.4.2)),Сохранить(сох­ра­не­ние ри­сун­ка в файле (п. 8.4.2)),Очистить(очистить поле для рисования),Выход(закон­чить выполнение прог­рам­мы),Помощь(вывод справочной ин­формации),Диалог(цветовая настройка),Экран(вывод формыForm2 для рисования).

Рис. 11.4.1. Форма для рисования

Тексты процедур обработки событий для формы Form1

Private Sub Form_Load() 'процедура загрузки формы

'цвета карандаша хранится в свойстве TagформыForm1Form1.Tag=Form2.ForeColor‘цвет карандаша = цвету переднего плана формы

Text3.Text=Form2.DrawWidth'первоначальное значение ширины линии

End Sub

Private Sub Command1_Click() ‘обработка кнопкиОткрыть

CommonDialog1.Filter = “Рисунки BMP|*.bmp|Рисунки ICO|*.ico|“ & _

“Рисунки CUR|*.CUR|Все файлы|*.*“ ‘фильтр отбора файлов

CommonDialog1.DialogTitle = “Выберите файл с рисунком“

CommonDialog1.ShowOpen ‘вывод окна и выбор файла

Form2.Picture = LoadPicture(CommonDialog1.FileName) ‘загрузка рисунка

End Sub

Private Sub Command2_Click() ‘обработка кнопки “Сохранить”

CommonDialog1.Filter = “Рисунки BMP|*.bmp|Рисунки ICO|*.ico|” & _

“Рисунки CUR|*.CUR“ ‘фильтр отбора файлов

CommonDialog1.DialogTitle=“Выберите или введите имя файла“

CommonDialog1.ShowSave‘вывод окна и выбор файла

If CommonDialog1.FileName <>”” then _

SavePicture Form2.Image, CommonDialog1.FileName ‘сохранение рисунка

End Sub

Private Sub Command3_Click() 'обработка кнопки “Очистить“

Form2.Picture = LoadPicture() ‘удаление рисунка с формы Form2

Form2.Cls 'очистка формы

End Sub

Private Sub Command4_Click() 'обработка кнопки “Выход“

End'закончить выполнение программы

End Sub

Private Sub Command5_Click() 'обработка кнопки “Помощь“

MsgBox(“Левая кнопка мыши-рисовать“+Chr(13)+“правая-стирать“+Chr(13)+ _ “щелчок на поле цвет-изменить цвет“) 'вывод текста помощи

End Sub

Private Sub Command6_Click() 'обработка кнопки “Диалог“

CommonDialog1.Flags = cdlCCRGBInit 'диалог выбора цвета (п.8.4.4)

CommonDialog1.ShowColor'вывод окна настройки цвета (рис.8.4.4.1)

Text1.BackColor = CommonDialog1.Color 'установка цвета фона поля Text1

End Sub

Private Sub Command7_Click() ‘обработка кнопкиЭкран

Form2.Show‘вывод формыForm2 для рисования

EndSub

Private Sub HScroll1_Change() 'фиксация ползунка в полосе прокрутки

'оперативное изменение цвета фона поля Text1 на текущийRGB-цвет

Text1.BackColor = RGB(HScroll1.Value, Slider1.Value, Val(Text2.Text))

End Sub

Private Sub HScroll1_Scroll() 'движение ползунка в полосе прокрутки

HScroll1_Change'выполнение процедуры по изменению цвета фонаText1

End Sub

Private Sub Slider1_Change() 'процедура фиксации ползунка Slider1

HScroll1_Change'выполнение процедуры по изменению цвета фонаText1

End Sub

Private Sub Slider1_Scroll() 'процедура перемещения ползунка Slider1

HScroll1_Change'выполнение процедуры по изменению цвета фонаText1

End Sub

Private Sub Text2_Change() 'изменение значения поля Text2

HScroll1_Change'выполнение процедуры по изменению цвета фонаText1

End Sub

Private Sub Text3_Change() 'изменение значения поля Text3

'при ошибке в поле Text3 помещается значение 1

If Val(Text3.Text) = 0 Then Text3.Text = 1

Form2.DrawWidth = Text3.Text 'изменение толщины линии

End Sub

Private Sub Text1_Click() 'щелчок мышки на поле Text1 (смена цвета)

IfOption1.ValueThen'режим изменения цвета карандаша

Form1.Tag=Text1.BackColor'установитьRGB-цвет карандаша

Else'режим изменения цвета фона формы

Form2.BackColor = Text1.BackColor 'цвет фона формы=цвету фона Text1

End If

End Sub

Тексты процедур обработки событий для формы Form2

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _