Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Аналогично можно продолжить разработку главного меню приложения.

Поиск

Создание контекстного меню

Для создания контекстного меню приложения поместите на форму элемент управления contextMenuStrip. В результате появится конструктор для создания контекстного меню.

Рисунок 3.44- Форма с элементом contextMenuStrip

Создадим первый пункт меню. Для этого в первое пустое поле, где в данный момент содержится надпись «Вводить здесь», вводим имя нового пункта, например «Копировать». Затем добавим пункт меню «Вставить» и пункт «Выход».

Рисунок 3.45- Форма с элементом contextMenuStrip

 

Двойным щелчком мыши по пункту меню создадим обработчики событий выбора каждого пункта меню. На этом будем считать, что наше первое контекстное меню создано и теперь давайте проверим, как оно работает. Запускаем приложение и нажимаем правую кнопку мыши.

Но сколько бы вы сейчас не нажали правую кнопку мыши, в результате ничего не произойдёт, так как в данный момент мы не выполнили ещё одно важное действие. Необходимо открыть окно свойств для формы и выбрать свойство contextMenuStrip (в данный момент оно имеет значение (нет)).

Выбрав это свойство, установите в него значение contextMenuStrip1.

Рисунок 3.46- Свойств формы contextMenuStrip

Снова запускаем приложение и нажимаем правую кнопку мыши.

 

 

Рисунок 3.47- Пример контекстного меню

 

Как видим на рисунке 3.47, меню работает.

Аналогично меню можно создать панель инструментов toolStrip.

Рисование на форме

В клиентской области формы можно не только размещать элементы управления, но и выполнять рисование. В Framework.Net реализован расширенный графический интерфейс GDI+, обладающий широким набором возможностей. В пространство System::Drawing и System.Drawing2D включено большое количество классов, которые позволяют выполнить рисование в форме.

Для рисования в формах нужно иметь объект класса Graphics, методы которого позволяют выполнять рисование в формах, и такие инструменты рисования, как – цвет, перо, кисть, шрифт.

Класс Graphics – это основной класс, с помощью которого выполняется рисование. Создание объектов класса Graphics выполняется не обычным способом, с помощью операции gcnew, а с помощью методов CreateGraphics().

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

- цвет (color) – задает цвет пикселей области рисования;

- перо (pen) – задает тип (шаблон) линии, с помощью которой выполняется рисование графического объекта;

- кисть (brush) – задает шаблон заполнителя замкнутых областей формы;

- шрифт (font) – задает способ рисования символов.

 

 

Класс перьев Pen

Для описания перьев имеется класс Pen. Создание объекта Pen выполняется с помощью операции gcnew, при этом можно сразу задать цвет линии:

System::Drawing::Pen^P=gcnew System::Drawing::Pen(Color::Black);

Основным свойством данного класса является DashStyle, с помощью которого задается стиль линии, значения перечисления DashStyle, такие, как Solid (сплошная), Dot (точка), Dash (тире), DashDot (тире-точка), DashDotDot (тире-точка-точка).

P->DashStyle::set(Drawing::Drawing2D::DashStyle::DashDotDot);

Толщину линии можно изменить с помощью свойства Width:

P->Width=5;

Вместо создания нового пера можно использовать свойство статического класса Pens, в котором описаны системные перья толщиной в 1 пиксель. Например, Pens::Blue – перо голубого цвета толщиной в 1 пиксель.

 

Класс кистей Brush

Для работы с одноцветными кистями имеется статический класс Brushes, в котором заданы одноцветные кисти стандартных цветов. Например: Brushes::Red – кисть для закраски сплошным красным цветом.

Кроме того можно создать собственную кисть класса SolidBrush, для которой можно задать собственный цвет заданной интенсивностью.

Цвет и его интенсивность (прозрачность) задается методом FromArgb объекта Color:

Color col=Color::FromArgb(alpha, сolor);

где

- параметр alpha – задает прозрачность цвета. Чтобы создать непрозрачный цвет, установите для alpha значение 255.Чтобы создать полупрозрачный цвет, установите для alpha любое значение от 1 до 254.

- параметр сolor – задает базовый цвет на основе которого создается новый.

Например:

Color customColor = Color::FromArgb(255, Color::Blue);

SolidBrush^ Bsh = gcnew SolidBrush(customColor);

Создана кисть Bsh непрозрачного голубого цвета.

Для создания кисти класса HatchBrush со стандартным геометрическим рисунком можно создать объект данного класса, для которого выбрать узор, цвет рисунка и цвет фона:

System::Drawing::Drawing2D::HatchBrush^ Brsh = gcnew System::Drawing::Drawing2D::HatchBrush

(System::Drawing::Drawing2D::HatchStyle::Cross, Color::Aqua,Color::Red);

Где Cross – узор, Aqua – цвет линий узора, Red –цвет фона.

Класс шрифтов Font

Для выполнения вывода текста в клиентской области формы нужно указать используемый шрифт, который задаются с помощью класса Font.

При создании объекта класса Font задается тип шрифта и его размер. Кроме того можно задать стиль шрифта. Например:

System::Drawing::Font^fnt = gcnew System::Drawing::Font

("Times New Roman", 24);

Строка с названием шрифтов, которые установлены на компьютере может содержать такие названия, как "Times New Roman", "Arial" или "Courier New".

Третьим параметром можно задать стили шрифта, такие как: Regular (обычный, по умолчанию), Bold (жирный), Italic (курсив), Underline (подчеркнутый), Strikeout (перечеркнутый). Например:

System::Drawing::Font^fnt = gcnew System::Drawing::Font ("Courier New", 12,FontStyle::Bold | FontStyle::Italic);

 

Методы рисования

В классе Graphics имеются следующие три основные группы методов рисования: 1) методы рисование текста; 2) методы рисование линий и 3) методы рисование и заполнения фигур.

Рисование текста

Для вывода текста на экран относительной левой верхней точки можно использовать следующий метод:

DrawString(Текст, шрифт, кисть, координаты точки);

Рассмотрим пример вывода текста на форму нажатием кнопка:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

Graphics ^gf = CreateGraphics();

System::Drawing::Font^fnt = gcnew System::Drawing::Font ("Times New Roman", 24);

SolidBrush^ shBsh = gcnew SolidBrush(Color::Red);

gf->DrawString("Вывод текста!",fnt,shBsh,50,50);

}

Пример формы после нажатия кнопки "Текст" приведен на рисунке 3.48.

Рисунок 3.48 – Результат вывода текста

Для рисования текста под углом вначале необходимо перенести начало координат в левый-верхний угол области вывода, выполнить поворот на заданный угол и только затем выполнить вывод текста. Например:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

Graphics ^gf = CreateGraphics();

System::Drawing::Font^fnt = gcnew System::Drawing::Font ("Times New Roman", 24);

SolidBrush^ shBsh = gcnew SolidBrush(Color::Red);

gf->DrawString("Вывод текста!",fnt,shBsh,50,50);

}

Пример результатов после нажатия кнопки "Текст" приведен на рисунке 3.49.

Рисунок 3.49- Форма с текстом под углом 45о.

Рисования простых фигур

Для рисования простых фигур с помощью выбранного пера используется следующий набор перегруженных методов класса Graphics:

- DrawLine(...) – рисование линии. Параметрами этого метода, кроме пера, являются координаты двух точек – начала и конца линии.

- DrawRectangle(...) – рисование прямоугольника. Параметрами этого метода являются перо, координаты верхнего левого угла, ширина и высота.

- DrawEllipse(...) – рисование эллипса. Эллипс создается как геометрическая фигура, вписанная в прямоугольник. То есть самого прямоугольника на рисунке не видно, но параметры эллипса, кроме пера, одновременно являются параметрами такого прямоугольника.

- DrawPoligon(...) – рисование многоугольника. Рисует многоугольник, определяемый массивом структур Point.

- DrawPie(...) – рисование сектора круга. Рисует сектор, определяемый эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.

Эти методы рисуют только контуры фигуры, но не закрашивают их внутреннюю область.

Рассмотрим пример вывода на форму эллипса пером заданного стиля и толщины. Рисование фигуры инициируется щелчком мыши по форме. Результат приведен на рисунке 3.50.

private: System::Void Form1_MouseClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {

System::Drawing::Pen^P=gcnew System::Drawing::Pen(Color::Black);

Graphics ^gfx = CreateGraphics();

P->DashStyle::set(Drawing::Drawing2D::DashStyle::DashDotDot);

P->Width=5;

gfx->DrawEllipse(P,70,50,150, 80);

}


Рисунок 3.50 – Вывод эллипса на форму

Приведем еще один пример рисования многоугольника на форме. Результаты приведены на рисунке 3.51.

private: System::Void Form1_MouseClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)

{

Graphics ^gfx = CreateGraphics();

Point x1= Point(140,50);

Point x2= Point(70,100);

Point x3= Point(70,200);

Point x4=Point(200,200);

Point x5=Point(200,100);

array <Point>^xx={x1,x2,x3,x4,x5};

gfx->DrawPolygon(Pens::Red,xx);

}

 

Рисунок 3.51 – Построение многоугольника

 

Рисование и закраска фигур

Класс Graphics для закраски областей заданной кистью содержит набор перегруженных методов:

- FillRectangle(...) – закраска прямоугольной области;

- FillEllipse(...) – закраска эллипса;

- FillPoligon(...) – закраска прямоугольника;

- FillPie(...) – закраска сектора круга.

Для закраски фигур вместо параметра Pen в этих методах используется параметр Brush.

Приведем пример рисования прямоугольника с заливкой стандартным геометрическим узором. Результат приведен на рисунке 3.52.

 

 

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {

Graphics ^gfx = CreateGraphics();

System::Drawing::Drawing2D::HatchBrush^ Brsh = gcnew System::Drawing::Drawing2D::HatchBrush

(System::Drawing::Drawing2D::HatchStyle::Cross, Color::Aqua,Color::Red);

gfx->FillRectangle(Brsh,50,50,160,100);

}

Параметры объекта Brush смотрите выше.

Рисунок 3.52 – Закраска фигуры

 

Рекомендуем самостоятельно попробовать другие стили заполнения, такие как DarkHorizontal, Weave, Percent20, SmallGrid и другие.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 446; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.164.100 (0.01 с.)