Создание Windows-приложений на основе Visual C#

         

Рисование в Windows-формах


Библиотека .NET Framework предоставляет чрезвычайно большой набор классов для реализации рисования в Windows-формах. Кривые Безье, текстурные кисти и перья, трансформация изображения, всевозможные виды градиентной заливки, слои, — практически все атрибуты крупного графического пакета могут быть воссозданы на одном из языков .NET Framework. Для рассмотрения этих методов и свойств потребовалась бы отдельная книга, поэтому мы ограничимся простым приложением, позволяющим рисовать линиями различного цвета и толщины. Создайте новое приложение и назовите его EasyPaint. Устанавливаем следующие значения свойств формы:

Form1, форма, свойствоЗначение
BackColorActiveCaptionText
Icon
Code\Glava6\EasyPaint\Icon\rc_bitmap.ico
TextEasyPaint

Добавляем на форму элементы управления MainMenu и ColorDialog. Создаем следующие пункты меню:

NameText
mnuFormat&Формат
mnuColor&Цвет
mnuWidth&Толщина линии

Как обычно, рисовать мы будем при удержании и перемещении левой кнопки мыши. В классе формы добавляем объекты:

//Переменная, отвечающая за включения режима рисования. //Значение true — режим включен bool DrawMode = false; //Создаем массив точек, из которых будут формироваться линии ArrayList points = new ArrayList();

Для рисования линий и кривых в библиотеки .NET Framework имеется класс Pen, экземпляр которого нам и нужно создать:

Pen mainPen;

В графических программах принято в рабочей области изменять курсор — пользователю удобнее рисовать, когда он имеет вид карандаша. Можно просто установить значение из перечисления свойства Cursor формы (рис. 6.16), но как быть, если нужен вид, не входящий в это перечисление?


Рис. 6.16.  Свойство Cursor формы

Самый простой способ добавить произвольный курсор к приложению — это поместить изображение курсора (в данном случае, Pencil.cur) в папку bin\Debug приложения и в конструкторе формы указать этот курсор в качестве основного:

public Form1() { InitializeComponent(); this.Cursor = new Cursor("Pencil.cur"); mainPen = new Pen(this.ForeColor); }


Во второй строчке мы также устанавливаем цвет созданного пера mainPen. Переключаемся в режим дизайна, в окне Properties в событиях формы дважды щелкаем в поле событий MouseDown, MouseMove, MouseUp:

Листинг 6.11.

(html, txt)

Логика работы предельно проста — при нажатии левой кнопки мыши включается режим рисования; при ее перемещении формируется массив точек с текущими координатами мыши, массив изображений точек pts затем передается методу DrawCurve, который и рисует линию. При отпускании кнопки режим рисования отключается.

В обработчике пункта меню Color при выборе цвета будет создаваться новое перо:

private void mnuColor_Click(object sender, System.EventArgs e) { if(colorDialog1.ShowDialog()==DialogResult.OK) { mainPen = new Pen(colorDialog1.Color); } }

Запускаем приложение. Вызывая диалоговое окно выбора цвета, можно рисовать разными цветами на форме (рис. 6.17).


Рис. 6.17.  Приложение EasyPaint. Курсор имеет точно такой же вид, как и в редакторе Microsoft Paint


Содержание раздела