Примеры к статье смотри в файле
gdiplus.zip
В этой статье речь пойдет о GDI+ и о новых возможностях при работе с
графикой. Но сначала немного вернемся назад и вспомним старый добрый
Visual Basic 6.
Мы все любили VB за простоту и удобство. Но работа с графикой была
его самым слабым местом. Продвинутые пользователи, неудовлетворенные
низкой скоростью обработки графических объектов, бросались в дебри
Windows API, выигрывая драгоценные секунды. Но времена меняются. Теперь
VB.NET является таким же полноценным языком, как и C# и VC++.NET, а
кроме того Майкрософт приготовила разработчикам роскошный подарок - GDI+.
Теперь можно легко работать с градиентской закраской, обеспечить
поддержку прозрачности, осуществлять операции поворота, масштабирования,
отражения, полноценная поддержка популярных графических файлов, вплоть
до конвертации в другой формат.
Интерфейс GDI+ является развитием GDI (Graphic User Interace),
использованного в ранних версиях Windows. Таким образом, модификация GDI
для .NET называется GDI+. Пространство имен System.Drawing
открывает досуп к базовым средствам GDI+. Более развитые инструменты
предоставляются пространствами имен System.Drawing2D,
System.Drawing.Imaging и System.Drawing.Text. Класс
Graphics содержит методы для создания графических объектов,
структуры Point, Rectangle и Size отвечают за
графические примитивы, класс Pen позволяет создавать различные
перья для начертания линий, а абстрактный класс Brush различные
способы заливки фигур.
GDI+ предоставляет богатые возможности для работы с графикой. Давайте
рассмотрим их поближе. Но учтите, что в одной статье невозможно описать
все богатство возможностей GDI+. Я покажу наиболее эффектные примеры,
реализация которых в старых версиях бейсика требовало очень большого
труда, бессоных ночей и сотен строчек кода.
Преобразование растровых форматов
Удивительно легко теперь можно конвертировать один графический формат
в другой. Для этого достаточно воспользоваться классом ImageFormat
с заданным форматом. Поддерживаются все популярные форматы: BMP, GIF,
JPG, TIFF, ICO и еще ряд других.
Dim strFilename As String = "c:/sample.jpg"
Dim bitmap As New Bitmap(strFilename)
strFilename="c:/sample.gif"
bitmap.Save(strFilename, System.Drawing.Imaging.ImageFormat.Gif)
Уже только один этот пример показывает, насколько далеко ушел VB.NET
от своего предшественника VB 6.0. Вы все еще программируете на VB 6.0?
Тогда мы идем к вам :-)
Деформация картинки
Еще одна популярная тема на VB-форумах - это деформация картинки:
сжать, увеличить, перевернуть, искривить. Эти приемы используются очень
часто для создания различных эффектов, применяемых в играх, хранителях
экранах, в окне О программе.
Теперь существует такой мощный метод как DrawImage. Данный
метод имеет более 30 перегрузок! Я вам продемонстрирую один вариант -
вывод изображения в виде параллелограмма.
Overloads Public Sub DrawImage( _
ByVal image As Image, _
ByVal destPoints() As Point _
)
В данном методе выводится изображение в виде параллелограмма, вершины
которых задаются массивом из координах из трех точек
Градиенты
Теперь плавно перейдем к градиентам (извините за каламбур). Градиент
- это плавный переход одного цвета в другой. Весьма популярная тема
среди программистов. Существует вагон и маленькая тележка реализаций
градиента. Помню, были даже коммерческие варианты ActiveX-элементов. Но
теперь для создания этого эффекта достаточновоспользоваться к примеру
классом LinearGradientBrush.
...
Dim lbr As New LinearGradientBrush(rect, Color.Red, Color.Yellow, angle)
...
Причем, градиент можно применить не только к геометрическим фигурам,
но и к тексту. При желании, можно создавать очень красивые, переливающие
цветами слова. Пробуйте!
Заключение
В статье я затронул самую малую часть возможностей GDI+. А ведь еще
сплайны, кривые Безье, работа с метафайлами, траектории и регионы.
Надеюсь, у вас пробудился интерес к данной технологии. Множество
примеров на эту тему представлено на
MSDN, а также в различных
книгах, посвященных VB.NET.
Счастливого Вам программирования!