Модификация приложения Windows Forms : подготовка интерфейса и добавление TabControl



 

Для начала изменим размер нашей единственной формы. Для этого можно потянуть за уголок в нужном направлении на странице визуального представления формы1. Но также размер можно менять на панели свойств этой формы. Для этого нужно поменять значение размера в пикселях (высоту и ширину) в поле Size.

 

ПРИМЕЧАНИЕ № 1: Для перехода на визуальное представление формы, необходимо двойным нажатием в обозревателе решений нажать на значок формы ( ) или выбрать вкладку на панели вкладок с именем <имя формы>. cs [Конструктор].

 

Задаём следующие параметры формы на панели Свойства:

 

( Name ) изменим с Form 1. cs 2 на LWP 19 Main

^ Поменяем внутреннее имя формы.

Text изменим с Form 1 на Расширенная работа с GDI + ( C #)

^ Поменяем заголовок формы (то, что отображается в шапке приложения слева).

Icon изменим изображение (иконку) приложения

^ Необходим файл значка *. ico.

Size изменим со значений 300; 300 на 800; 600

^ Поменяем размер формы.

 

ПРИМЕЧАНИЕ № 2: Для того, чтобы поменять имя файла нашей формы, необходимо выполнить следующее: выделить в обозревателе решений значок формы ( ) и нажать правую кнопку мыши, затем выбрать Переименовать. Ввести необходимое новое имя СОХРАНЯЯ расширение *. cs. После смены имени, автоматически поменяются имена проассоциированных непосредственно с формой файлов:

 

Разместим на форме единственный элемент: TabControl ( ), находится в группе Контейнеры панели элементов.

Растянем этот элемент до краёв формы и измени имя элемента:

 

TabControl:

( Name ): TB_Main
Anchor: Top, Bottom, Left, Right

 

Изменение последнего свойства потребуется, чтобы весь элемент менял размер при изменении размеров формы.

 

То, что должно получиться в итоге, показано на рисунке ниже:

 

Рис. 3. 1. Модифицированная форма приложения и расстановка необходимых элементов управления

 

4. Модификация приложения Windows Forms : вкладка «Просто фон!»

 

Первая вкладка TabControl будет показана первой при старте приложения. На неё просто необходимо установить что-нибудь простое.

 

Для начала изменим текст самой вкладки. Выделим элемент управления и перейдём к свойствам (панель Свойства) элемента. Нам нужно свойство TabPages:

 

Жмём «...» и открываем окно редактирования вкладок:

 

Рис. 4. 1. Редактор коллекции TabPage: меняем Text и Cursor

 

Для вкладки tabPage 1 (имя не будем менять), изменим свойства:

TabPage:

Text: Просто фон!
Cursor: No

 

В качестве фона вкладки будет выбрано некое изображение. Пусть это будет изображение с именем Background _ Image . jpg (использованное в данной работе изображение можно получить в ZIP-архиве по ссылке в конец этого материала). Для добавления выполним действия: Проект -> Существующий элемент... (Shift+Alt+A), в открывшемся окне находим изображение и жмём Добавить.

 

Теперь приступаем к коду вкладки. Для начальной вкладки tabPage 1 проинициализируем событие Paint (панель свойств, вкладка События):

 

Код события такой:

 

   private void tabPage1_Paint(object sender, PaintEventArgs e)

   {

       // При создании вкладки и её прорисовки, вызываем метод DoPaint

       // Используем аргумент e для получение параметров рисования (устройста и прямоугольной области)

       DoPaint(e.Graphics, e.ClipRectangle);

     }

 

Добавим и сам метод DoPaint в код под событие Paint:

 

   protected void DoPaint(Graphics g, Rectangle clipBox)

   {

       RectangleF bounds = clipBox;

       String welcome = "Расширенная работа с GDI+ (C#) :: Вкладка \"Просто фон\"";

       Bitmap bg = new Bitmap("/Background_Image.gif"); // Абсолютный путь до изображения

       g.DrawImage(bg, bounds); // Рисуем и растягиваем изображение на весь фон вкладки

       // Создаём градентную заливку для текста

       LinearGradientBrush brush = new LinearGradientBrush(bounds,

           Color.FromArgb(130, 255, 0, 0), Color.FromArgb(255, 0, 0, 255),

           LinearGradientMode.BackwardDiagonal);

       // Создаём форматирование текста и помещаем его в центре вкладки (по вертикали и горизонтали)

       StringFormat format = new StringFormat();

       format.Alignment = StringAlignment.Center;

       format.LineAlignment = StringAlignment.Center;

       // Задаём параметры шрифта

       Font font = new Font("Verdana", 48, FontStyle.Bold);

       g.DrawString(welcome, font, brush, bounds, format);

   }

 

В самом начале файла формы LWP 19 Main . cs добавим следующую строчку:

 

using System.Drawing.Drawing2D;

 

Всё предельно просто. Комментарии расставлены. Собственно этим кодом был реализован простейший пример работы с GDI+.

Откомпилируем и запустим приложение (Debug). Увидим, что текст отрисовывается без сглаживания. Это связано с тем, что в Windows Forms по умолчанию отключается улучшенный режим отрисовки шрифтов. Включить можно, например, так (размещать код перед кодом рисования объекта):

 

       g.SmoothingMode = SmoothingMode.AntiAlias;

 

В объекте Graphics имеется также соответствующее свойство InterpolationMode. Выигрыш в качестве в данном случае приводит к проигрышу в скорости, поэтому при использовании режима с наивысшим качеством InterpolationModeHighQualityBicubic медленные компьютеры могут выводить изображения больших размеров в течение нескольких секунд (речь идет об экранном выводе, то есть умеренно больших, так как бикубическая интерполяция изображений полиграфического разрешения может длиться минутами и на самых современных компьютерах)! Но только этот метод способен адекватно отображать, например картинку при уменьшении её до 25 процентов (и менее) от оригинала. Этот режим очень поможет различным автоматическим генераторам иконок (thumbnail) изображений в ASP.NET.

На качество (и скорость) вывода растров также влияют некоторые другие установки объектов Graphics. Перечислим их:

 

Метод Назначение
SmoothingMode Как уже говорилось, позволяет указать метод устранения ступенчатости (A nti A liasing) при выводе примитивов – линий и геометрических фигур.
CompositingMode Устанавливает или отключает учет прозрачности при наложении растровых изображений.
CompositingQuality Управляет качеством расчета цветовых компонентов при наложении растров.
PixelOffsetMode Задает метод учета смещения пикселов при интерполяции. Грубо говоря, определяет, являются ли координаты пикселов (или их центров) целыми числами при расчетах.
RenderingOrigin Устанавливает позицию начальной точки при псевдосмешении (dithering) цветов в 8- и 16-битных режимах.

 


Дата добавления: 2019-09-13; просмотров: 237; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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