Купить
 
 
Жанр: Учеба

Си шарп: создание приложений для windows

страница №17

т VScrollBar и четыре элемента Label. Сделайте это так,
как показано на рис. 24.2.
Установите для компонент свойства в соответствии с приведенным
ниже списком:
Forml:
Text
vScrollBarl:
LargeChange
Maximum
Minimum
SmallChange
Value
labell:
Text
Font Size
Font Bold
Iabel2:
BackColor
Text
Font Size
Font Bold
Name
Iabel3:
Text
Font Size
FontBold
Iabel4:
BackColor
Text
Font Size
Font Bold
Name
- измерение температуры
- 10
- 60
, ,. Qft
- 32
- Фаренгейт
- 10
- True
- White
- 32
- 14
- True
- labelFarTemp
- Цельсий
- 10
- True
- White
- 0
- 14
- True
- labelCTemp
Рис. 24.2. Проектирование формы
приложения ScroUApp, этап 1
_;n* x

32


Цельсий
О
Рис. 24.3. Проектирование формы
приложения ScroUApp, этап 2
276 Раздел I I I . Программирование для Windows
Обратите внимание, что значения температур проинициализированы
32F и ОС. Когда вы сделаете свою форму, она должна иметь вид, представленный
на рис. 24.3.
Как уже отмечалось, компонент ScrollBar имеет событие Scroll. Давайте
добавим обработчик этого события в код программы. Для этого в окне
свойств на закладке событий для элемента vScrollBarl щелкните два раза
по событию Scroll. В код программы добавится обработчик события Scroll:
this.vScrollBarl.Scroll += new
System.Windows.Forms.ScrollEventHandler(this.vScrollBarl_Scroll) ;
и тело функции обработчика. Добавьте код функции vScrolIBarl_ScrolI,
представленый ниже:
private void vScrollBarl Scroll (object: sender,
System.Windows.Forms.ScrollEventArgs e)
{
labelFarTemp.Text - vScrollBarl.Value.ToString() ;
labelCTemp.Text ^
Convert.ToString((int) (( (double)vScrollBarl.Value - 32)/5*9));
Этот код переводит значение Value полосы
прокрутки во время изменения положения
бегунка и определяет значение температуры ^
по шкале Фаренгейта. Затем вычисляется
значение температуры по Цельсию и отобра- ; " '"' '" "иЛ
жаются оба значения. 90 10
Откомпилируйте и запустите программу.

Вы увидите, что при изменении положения
бегунка полосы прокрутки изменяются значения
температур (рис. 24.4).
Попробуйте найти точку, в которой значение
температуры по Цельсию равно значе- " _. . _
~Г " ^ Рис. 24.4. Окно программы
нию температуры по Фаренгейту. ScrollApp
25. МЕНЮ
Обычно программы в среде Windows имеют головное меню, которое образует
более или менее сложную структуру выполняемых приложением
команд. Создание головного меню приложения является фактически альтернативой
выполнения команд элементами управления на форме в соответствии
с программным кодом процедур, написанных для этих элементов.
Однако, в отличие от элементов управления, которые осуществляют выполнение
различных процедур при совершении различных событий над элементом
управления, головное меню приложения позволяет создавать иерархию
вложенных друг в друга меню команд любой степени сложности.
Особенно эффективно создание головного меню приложения в том
случае, когда в приложении необходимо выполнять множество различных
команд. При этом команды, выполняющиеся из головного меню,
будут собраны в одной строке головного меню, которое можно раскрыть
в любой нужный момент для выполнения требуемой команды, не занимая
много места в окне приложения на экране дисплея, где должна происходить
основная обработка информации.
СОЗДАНИЕ ГОЛОВНОГО МЕНЮ
Для создания головного меню приложения Visual Studio .NET имеет в
панели ToolBox компонент MainMenu. Создайте новое Windows Forms C# приложение
с именем MenuApp. Добавьте на форму компонент MainMenu. В панели
компонентов ниже основной формы приложения появится объект
mainMenul. В верхней части формы появится
проект меню с единственным полем "Туре Неге". ' -&"-_""
Поле является редактируемым, если вы измените
надпись в поле, то справа и снизу от него
появятся дополнительные поля (рис. 25.1).
Добавьте в меню пункты так, как показано
на рис. 25.2.
Пункт меню "Команда меню" содержит
три подпункта:
• Добавить
• Удалить
• Переместить.
Кроме пункта "Команда меню" основное _^______
меню содержит пункт "О программе". Такой р и с 2 5 Д Д о б а в л е н и е п у н к т о в
пункт обычно присутствует во всех коммерчес- головного меню
278 Раздел I I I . Программирование для Windows
ких приложениях и предоставляет пользователю
информацию о версии программы, разра- La*;ir"1-i-1 • ""
ботчиках и т. д. Пункт меню "О программе" не
имеет подпунктов. Для лучшей читаемости
программы измените свойство Name каждого
пункта меню.
Команда меню - menuItemCommand;
Добавить - menuItemAdd; ;
Удалить - menuItemDel;
Переместить - menuItemMove; \
О программе - menuItemAbout. :
Компонент MainMenu представлен в коде
программы классом System.Windows.Forms.Main- ри с . 25.2. Основное меню
Menu. приложения MenuApp
private System.Windows.Forms.MainMenu mainMenul;
Каждому пункту меню в коде программы
соответствует объект класса Menultem.
private System.Windows.Forms.MenuItem menuItemCommand;
private System.Windows.Forms.Menultem menuItemAdd;
private System.Windows.Forms.Menultem menuItemDel;
private System.Windows.Forms.Menultem menuItemMove;
private System.Windows.Forms.Menultem menuItemAbout;
Вот как происходит добавление элементов головного меню:
this.mainMenul.MenuIterns.AddRange(new System.Windows.Forms.Menultem[] (
this.menuItemCommand,
this.menuItemAbout}) ;
Эти строки кода добавляют в объект MainMenu два пункта меню: "Команда
меню" и "О программе". Свойство Menultems объекта MainMenu имеет
функцию AddRange, которая добавляет массив элементов Menultem в меню.
this.menuItemCommand.Menultems.AddRange(
newSystem.Windows.Forms.Menultem[] {
this.menuItemAdd,
this.menuItemDel,
this.menuItemMove));
Затем, в пункт меню menuItemCommand ("Команда меню") добавляется
три пункта menuItemAdd, menuItemDel, menuItemMove.

Теперь становится все очень понятно: для того чтобы внести изменения
в какой-либо пункт меню, вам необходимо будет изменить соответствующий
объект класса Menultem.
СОЗДАНИЕ ВЛОЖЕННОГО МЕНЮ
Разработчики С# максимально упростили работу с меню. Поэтому
создание вложенного меню не вызовет у вас затруднений. Скажу больше:
мы уже создавали вложенное меню, когда добавляли в пункт меню "КоМеню

279


манда меню" несколько пунктов. Но там мы
помещали подпункты в головное меню приложения.
Подпункты меню тоже могут содержать
вложенные элементы. Для того чтобы
"вложить" элемент в пункт меню, необходимо
добавить название в поле "Туре Неге", находящееся
справа от пункта меню (рис. 25.3).
При этом с правой стороны пункта меню
появится указательная стрелка, свидетельствующая
о наличии вложенных пунктов
меню. Добавьте в наше приложение пункт
меню "Уведомить" и вложите в него пункты
"Сообщение 1", "Сообщение 2", "Сообщение
3" так, как показано на рис. 25.3.
Рис. 25.3. Оодаиие пложенною
меню
ОБРАБОТКА СООБЩЕНИЙ МЕНЮ
Основным сообщением пункта меню является Click.
Это сообщение приходит, когда пользователь выбирает
пункт меню. Давайте добавим обработчики к
нашим пунктам меню. Для этого необходимо щелкнуть
два раза по полю с именем сообщения в окне
свойств пункта меню (рис. 25.4).
Добавьте обработчики для пунктов меню "Добавить",
"Удалить" и "Переместить". При этом в код
программы добавятся три новых метода. Измените
код этих методов так, как показано ниже:
Рис. 25.4. Окно свойств
элемента Menultem.
Закладка событий
private void menuItemAdd_Click(object sender, System.EventArgs e)
{
// код для добавления
MessageBox.Show("Добавление");
}
private void menuItemDel_Click(object sender. System.EventArgs e)
{
// код для добавления
MessageBox.Show("Удаление");
}
private void menuItemMove_Click(object sender. System.EventArgs e)
// код для перемещения
230 Раздел I I I . Программирование для Windows
MessageBox.Show("Перемещение");
I

Теперь при выборе одного из указанных выше пунктов меню на экране
появится соответствующее сообщение.
Кроме того, С# позволяет нескольким пунктам меню использовать один
и тот же обработчик сообщения. Для того чтобы проэкспериментировать
с такой возможностью, выделите сразу три пункта меню: "Сообщение 1",
"Сообщение 2", "Сообщение 3", удерживая нажатой клавишу Ctrl. Теперь
в окне свойств щелкните два раза по событию Click. Таким образом, вы
присвоите всем трем пунктам меню один и тот же обработчик. Посмотрите,
как это выглядит в коде программы:
this,menultem2.Click += new System.EventHandler(this.menultem2 Click);
this.menultem3.Click += new System.EventHandler(this.menuItem2_Click);
this.menuicem4.Click += new System.EventHandler(this,menuItem2_Click);
Для всех трех событий различных пунктов меню устанавливается один
и тот же обработчик - menuItem2_Click. Напишите следующий код для
функции menu Item 2_Click:
private void menultem2 Click(object sender. System.EventArgs e)
{
Menultem item = (Menultem)sender;
string message = item.Text;
MessageBox.Show(message);
Здесь я позволю себе раскрыть один из загадочных, наверное, для вас
параметров любого обработчика события, object sender -это объект, который
послал сообщение. Поскольку все объекты в С# являются наследниками
класса System.Object, то использование класса object в качестве параметра
"универсализирует" использование обработчиков событий. В
нашем случае мы знали, что обработчик menuItem2_Click получает события
только от объектов класса Menultem. Поэтому мы можем смело приводить
объект sender к классу Menultem.

Menultem item = (Menultem)sender;
Для того чтобы различить, от какого именно пункта меню пришло
событие, мы читаем значение свойства Text пункта меню.
string message - item.Text;
Это свойство различно у всех пунктов меню. Поэтому мы можем вычислить,
какой именно объект прислал сообщение. В нашем случае, мы
просто выводим на экран сообщение с текстом пункта меню.
MessageBox.Show(message);
КОНТЕКСТНОЕ МЕНЮ
Головное и контекстное меню - это, на мой взгляд, абсолютно различные
вещи с точки зрения функционального назначения. В головное меню
выносят все функции, которые выполняет программа. В любой момент
Меню 281
пользователь может воспользоваться нужным 1Г.ишг
пунктом меню для совершения какого-либо ^*-м
действия. С контекстным меню все по-другому.
Оно должно включать лишь те пункты,
которые соответствуют позиции вызова контекстного
меню. Контекстное меню появляется
при нажатии правой кнопки мыши. ч .
Давайте рассмотрим это на примере. Поме- -'
стите на форму приложения MenuApp компо- - ..; :
нент TrackBar. Расположите его по своему ус- "•" •
мотрению. В головное меню приложения между
пунктами "Команда меню" и "О программе" "" * ~~~(tm)
добавьте пункт "Стиль бегунка". Вложите в этот Рис* 2 5 5 - Г о л о в н о е меню
J
л _ управления стилем бегунка
пункт четыре подпункта: "Пусто", "Сверху-слева",
"Снизу-справа", "С обеих сторон" (рис. 25.5).
Переименуйте пункты меню, изменив свойство Name каждого элемента:
• Стиль бегунка - menuItemTrackBar;
• Пусто - menuItemNone;
• Сверху-слева - menuItemTopLeft;
• Снизу-справа - menuItemBottomRight;
• С обеих сторон - menuItemBoth.
Для всех вышеописанных элементов меню присвойте один и тот же обработчик
сообщения. Для этого выделите по очереди все четыре пункта
мешо, удерживая нажатой кнопку Ctrl. В окне свойств, на закладке Properties,
щелкните два раза указателем мыши по событию Click. При этом ко всем
пунктам меню добавится обработчик события menuItemNone_Click1.
thJLS.rr.enuItemNone. Click += new System. Event Handler (this . rr.enuItemNone_C±icki ;
this .menuItemTopLeft. .Click "= new System. EventHandler (this. menuItemNone Click) ;
this.menuItemBottomRight.Click += new
System.EventHandler(this.menuItemNone_ Click) ;
this.merrjItemBoth.Click i= new System.EventHandler("his.menuItemNone Click);
В конец кода программы добавится тело самой функции. Теперь давайте
создадим два контекстных меню. Одно из них будет частично дублировать
пункт основного меню "Команда меню", другое - пункт "Стиль
бегунка". Для этого поместите на форму два компонента ContextMenu:
contextMenul и contextMenu2. Выберите в панели компонент программы
объект contextMenul. При этом в верхней части формы появится редактируемое
поле. Выделите его указателем мыши. Ниже выделенного поля
появится поле ввода с надписью "Туре Неге". Добавьте в контекстное
меню пункты "Добавить", "Удалить" и "Переместить". Это контекстное
1 Возможно, имя обработчика события будет называться по-другому. Я не
нашел зависимости при экспериментировании с добавлением этого обработчика.
В любом случае, имя обработчика должно соответствовать одному из идентификаторов
пунктов меню. Не имеет значения, какому именно, просто в вашей версии
программы будет другое имя функции-обработчика.
282 Раздел I I I . Программирование для Windows
Рис. 25.6. Доступные
обработчики событий
меню будет соответствовать пункту основного меню
"Команда меню".
Теперь необходимо присвоить обработчики всем
добавленным пунктам меню. Для пункта меню "Добавить"
выберите из списка обработчиков события
Click функцию menuItemAdd_Click (рис. 25.6).
Таким образом, событию Click пункта контекстного
меню "Добавить" присвоится обработчик события
Click пункта основного меню "Добавить".
this .raenultem9 .Click t-= new
System.EventHandler(this.nenuItemAdd Click);
Тело функции-обработчика
уже существует, поэтому ??*'.*.- ' - ^
при выборе любого из этих Hmt ^"(tm) ",ndJW F^'R.^ " 3
двух пунктов меню будет выполняться одно и то
же действие. Установите для пунктов контекстного
меню contextMenul "Удалить" и "Переместить"
обработчики menuItemDel_Click и menuItemMovejTIick
соответственно. После того как вы это сделаете,
необходимо установить contextMenul контекстным
меню для формы Forml. Для этого у объекта Forml
существует свойство ContextMenu. Visual Studio
.NET сама добавит в список ContextMenu все необходимые
элементы, которые могут быть присвоены
этому свойству. В нашем случае список будет
состоять из двух элементов (рис. 25.7).

Установите значе'
Backerour dlmaje
Cursor
SFont
ForeCtljr
Fjrrr Borders у le
RrahtT L"ft
Default
• "-ortt..i
• 'ron-j
Default
Micro'i if( Sans '
bizable
Рис. 25.7. Список доступных
контекстных меню
Рис. 25.8. Контекстное меню
основной формы программы
ние свойства ContextMenu
в contextMenul.
Откомпилируйте и
запустите программу.
Щелкните правой
кнопкой мыши по любому свободному месту
на форме. На экране появится контекстное
меню, которое вы создали (рис. 25.8).
Если вы выберите любой из пунктов контекстного
меню, выполнится то же действие,
которое соответствует аналогичным пунктам
основного меню. Выберите пункт "Удалить"
контекстного меню.
На экране появится ШШШ лсообщение,
изображенное
на рис. 25.9. Такое же сообщение появится,
если вы выберете пункт "Удалить" основного меню.
Как я уже отмечал, контекстное меню - это
удобная возможность выполнять различные дейРис.
25.9. Результат команды
"Удалить"
_ _ _ Меню 283
ствия над объектами, не загромождая основное окно программы. Допустим,
нам необходимо в программе изменять свойства элемента TrackBar.
Предоставим пользователю возможность делать это как из основного меню
программы, так и из контекстного меню. В основном меню программы у
нас уже имеется пункт "Стиль бегунка", который содержит подпункты с
названиями стилей. Давайте добавим в контекстное меню contextMenu2 те
же подпункты. Для этого выделите объект contextMenu2 и добавьте в него
поля: "Пусто", "Сверху-слева", "Снизу-справа", "С обеих сторон". Я думаю,
это не вызовет у вас трудностей.
Теперь добавьте обработчик события Click для пунктов контекстного
меню. Для этого выделите все четыре пункта меню, удерживая клавишу
Ctrl, и выберите из предложенного списка для события Click обработчик
menuItemNone_Click. Теперь все пункты contextMenu2 и соответствующие пункты
основного меню имеют один и тот же обработчик - menuItemNone_Click.
Добавьте к этому обработчику код, который представлен ниже:
private void menuItemNone__Click (object sender, System.EventArgs e)
{
Menultem item = (Menultem)sender;
string text = item.Text;
switch(text)
{
case "Пусто":
trackBarl.TickStyle = TickStyle.None;
break;
case "Сверху-слева":
trackBarl.TickStyle - TickStyle.TopLeft;
break;
case "Снизу-справа":
trackBarl.TickStyle = TickStyle.BottomRight;
break;
case "С обеих сторон":
trackBarl.TickStyle = TickStyle.Both;
bieak;
Для завершения функциональности программы
установите свойство ContextMenu компонента
trackBarl как contextMenu2. Все, программа
закончена. Откомпилируйте и запустите
программу. Щелкните правой кнопкой
мыши по изображению бегунка на форме. J-- - ^^ I
t'Gepxv сне м !

Вместо контекстного меню, которое появля- с№.1У.етрля, |
ется при нажатии правой кнопкой мыши на -^si2bfr_j
форме, вы увидите контекстное меню, соот- _
ветствующее управлению стилями бегунка Рис 2 5 1 0 контекстное меню
(рис. 25.10). бегунка
284 Раздел I I I . Программирование для Windows
Попробуйте изменить стиль бегунка путем выбора различных пунктов
контекстного меню. Местоположение черточек бегунка будет изменяться
в зависимости от выбранного пункта меню. Те же самые операции можно
выполнить из основного меню приложения.
Давайте детальнее рассмотрим код функции-обработчика.
Menultem item = {Menultem)sender;
Присваиваем переменной item объект sender, от которого пришло сообщение.
Поскольку заранее известно, что сообщения всегда посылаются от
пунктов меню, выполняем приведение типа к Menultem. Объекты класса
Menultem имеют свойство Text, которое в нашем случае характеризует
пункт меню. Инструкция switch в языке С# поддерживает использование
строк в качестве элементов для сравнения (глава 7). Поэтому мы получаем
значения свойства Text и по нему идентифицируем пункт меню.
string text - item.Text;
swi-ch(text)
Далее выполняются несколько инструкций case, и по тексту пункта
меню выставляется стиль элемента управления ТгаскВаг.
case "Пусто":
trackBarl.TickStyle - TickStyle.None;
break;
case "Сверху-слева" :
trackBarl.TickStyle = TickStyle.TopLeft;
break;
case "Снизу-справа":
trackBarl.TickStyle - TickStyle.BottomRight;
break;
case "С обеих сторон":
trackBarl.TickStyle = TickStyle.Both;
break;
ПОМЕТКА ПУНКТОВ МЕНЮ
, я"-.,; ;оы -ьу Очень удобная возможность пунктов меню - их пометП^?^ми
I ка- Обычно это флажок слева от надписи пункта меню
(tm)? '"'• | (рИС. 25.11).
-•т":злг На этом рис. изображены пункты меню программы
Paint, входящей в поставку Microsoft Windows. Пункты
меню "Tool Box", "Color Box", "Status Bar", "Text Toolbar"
Пометка11 пстов п Р е Д н а з н а ч е н ы Для отображения и скрытия различных
м е ш о панелей программы. Если панель видна, то соответствующий
пункт меню помечен флажком, "птичкой" слева от
надписи.
Для пометки пункта меню используется свойство Checked класса
Menultem. Это свойство типа book Если значение Checked установлено в
true, то флажок присутствует, если в false - то отсутствует.
Меню 285
Давайте допишем программу так, чтобы текущий стиль элемента
управления TrackBar trackBarl в меню всегда был отмечен флажком.
Для этого необходимо изменить код программы. Во-первых, необходимо
добавить в описание класса Forml определение функции menultemCheck:

private void rr.enuItemCheck (string text)
{
// проходим по всем подпунктам изменяющим стиль бегунка
// расположенным в основном меню программы
foreach(Menultem item in menuItemTrackBar.Menultems)
{
// если текст меню совпадает с переданным параметром
// то помечаем пункт меню
if(item.Text == text)
(
item.Checked - true;
}
// если текст меню не совпадает с переданным параметром
// то снимаем пометку с пункта меню
else
{
item.Checked = false;
// проходим по всем подпунктам изменяющим стиль бегунка
// расположенных в основном меню программы
foreach(Menultem item in contextMenu2.Menultems)
{
// если текст меню совпадает с переданным параметром
// тс помечаем пункт меню
if(item.Text — text)
i
item.Checked = true;
)
// если текст меню не совпадает с переданным параметром
// то снимаем пометку с пункта меню
else
(
item.Checked = false;
Далее необходимо добавить вызов этой функции в функцию menultemNone_Click.

Поместите в конец функции menuIteml4one_Click следующую строку
кода:
menuItemCheck(text);
286 Раздел I I I . Программирование для Windows
Таким образом, мы вызовем функцию установки флажков для пунктов
меню, передав ей в качестве параметра текст выбранного пункта меню.
Еще один маленький штришок. Для того чтобы программа с самого
начала правильно функционировала, установите для пунктов меню
"Сверху-слева" свойство Checked в True по умолчанию, потому как именно
этот стиль установлен по умолчанию для объекта trackBarl. Вы можете
сделать это, выбрав нужный пункт меню и установив для него свойство
Checked как True в окне свойств.
Запустите программу. Выберите в контекстном меню стиль "С обеих
сторон". Откройте еще раз контекстное меню - пункт меню "С обеих
сторон" будет помечен. Можете изменить стиль на любой другой, пометка
всегда будет соответствовать выбранному стилю. То же самое произойдет
и с пунктами основного меню: их пометка будет строго соответствовать
пунктам контекстного меню.
26. ПАНЕЛЬ ИНСТРУМЕНТОВ-ToolBar
С этой главы мы начнем разработку приложения, которое будет использоваться
в нескольких последующих главах, поэтому будьте внимательны
при создании примера, описанного в данной главе. В конечном
итоге у нас получится простейший графический редактор, способный
выполнять элементарные операции по созданию изображений.
ОБЩИЕ СВЕДЕНИЯ
На сегодняшний день вы вряд ли встретите приложение Windows, не
имеющее панели инструментов. Как правило, кнопки на панели инструментов
копируют команды некоторых разделов меню. На панель инструментов
выносятся наиболее часто используемые кнопки, для того чтобы
не тратить время на выбор этой команды из пункта меню. Панелей инструментов
в одном окне может быть несколько, они могут располагаться
в любой части окна, их можно передвигать и скрывать. В данной главе
мы рассмотрим некоторые возможности применения панели инструментов
в приложениях на С#.
Создайте новое Windows Forms приложение с именем GraphEditorApp.
Измените свойство Text формы на "Графический редактор". Начнем проектирование
панели инструментов приложения. Панель инструментов представлена
в С# классом ToolBar. Соответствующий элемент находится в
панели ToolBox Visual Studio .NET. Панель инструментов может содержать
в себе различные элементы управления: кнопки, списки и даже диалоги.
Мы ограничимся рассмотрением простейшего случая - использование
кнопок в панели инструментов. Основной характеристикой кнопок является
их изображение. Как правило, кнопка в панели инструментов хранит
пиктографическое изображение того действия, которое совершается по
нажатию кнопки. Для того чтобы создать ToolBar, вам необходимо предварительно
подготовить изображения для его кнопок.
РАБОТА С РЕДАКТОРОМ ИЗОБРАЖЕНИИ
Я долго не мог решить для себя проблему, каким образом создать
пример приложения с использованием изображений, которые присутствовали
бы у каждого из вас. Я не мог найти ни в стандартной поставке
Windows, ни в Visual Studio .NET необходимых для примера пиктографических
изображений. Я бы мог выложить изображения в Интернет, но не
288 Раздел I I I . Программирование для Windows
Teit File HTML Page Frames1.
Style Sheet
Щ
XML Sche
XSLT File Bitmap File
' An R-iri.y ken Mi1.
у каждого может быть
доступ к Сети. Поэтому
вывод только один - вам
придется самостоятельно
создать изображения. Я
не буду описывать, как
нужно водить курсор мыши,
для того чтобы это
сделать. Я лишь поясню,
как в Visual Studio.Net coздавать
собственные изображения.
Для работы с
изображениями в среде
разработки существует
Image Editor. Он позволяет
создать изображения с
использованием простейших
инструментов. Для создания файла с изображением вам необходимо
воспользоваться пунктом меню File/New/File... В появившемся окне New
File (рис. 26.1) выберите тип файла "Icon File".

Перед вами появится пустое изображение с дополнительной панелью
управления. Кроме того, в основном меню появится новый пункт меню
Image. Выберите в меню пункт Image/Show Colors Window. На экране вы
увидите панель с отображением палитры компонент. В целом, среда Visual
Studio .NET должна выглядеть так, как показано на рис. 26.2.
Рис 26.2. Редактор изображений Visual Studio .NET
Рис. 26.1. Диалог выбора типа файла
Панель инструментов -ToolBar 289
••
USRESSSRS
Пав
Рис. 26.3. Пиктограм
ма инструмента
"Карандаш"
Рис. 26.4. Пиктограмма
инструмента
"Текст"
Я не стану описывать, как использовать компоненты
для рисования, ведь все, что вы нарисуете - будете
использовать только вы. Поэтому попробуйте создать
приемлемое для себя изображение
элемента "Карандаш". Р (tm) ^ : Щ й - ~ й ^
То, что получилось у меня, изображено
на рис. 26.3.
По умолчанию Visual Studio
.NET создает пиктограмму с двумя
изображениями 16x16 пикселов
и 32x32 пикселов. Вы рисовали
изображение размером 32x32.
Для того чтобы избежать неприятностей
при дальнейшем использовании пиктограммы,
необходимо удалить изображение 16x16 из файла.
Для этого выберите из меню Image/Current Icon
Image Types/16x16. В рабочей области
появится новое изображение. Удалите его, используя
меню Image/Delete Image Type.
Сохраните изображение в файл с именем "Карандашлсо".
Кроме элемента "Карандаш" вам необходимо
создать пиктограммы для
инструментов "Текст", "Линия" и " п
"Эллипс". Примеры пиктограмм "..•"""""•"..
представлены на рис. 26.4,26.5, 26.6. .-' \
Не забудьте удалить пиктограм- ]' "s
мы размером 16x16 и из этих фай- ": ::
лов. Сохраните созданные изобра- \ я.ш'
жения в файлы с именами "Текст.- Ц ""•-.."•""
ico", "Линия лсо" и " Эллипслсо",
соответственно. Если вы справились с этим заданием,
значит, можно приступать к дальнейшей разработке
приложения.
Рис. 26.5. Пиктограмма
инструмента
"Линия"
Рис. 26.6. Пиктограмма
инструмента
"Эллипс"
СОЗДАНИЕ ПАНЕЛИ ИНСТРУМЕНТОВ
Для начала необходимо выполнить подготовительную операцию - настроить
список изображений для кнопок панели инструментов. Добавьте
на форму элемент управления ImageList. Работа с ImageList уже описывалась
в главе 23. Поместите в с

Список страниц

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +380504468872

© Ассоциация электронных библиотек Украины

☝ Все материалы сайта (включая статьи, изображения, рекламные объявления и пр.) предназначены только для предварительного ознакомления. Все права на публикации, представленные на сайте принадлежат их законным владельцам. Просим Вас не сохранять копии информации.