Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 182

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 176 177 178 179 180 181 < 182 > 183 184 185 186 187 188 .. 320 >> Следующая

• залить всю клиентскую площадь формы текстурой из файлагАоис^Ьггф (изображением облаков);
• залить выводимый на форме текст текстурой на основе файла soap bubbles.brr p (изображением мыльных пузырей).
То, что должно получиться, представлено на рис. 921
Bitmaps as
brushes! flrVaf соо/Ж
Рис. 9.21. Применение текстурных кистей
Сам код приложения очень прост. В первую очередь (в конструкторе для фор мы) мы создаем два объекта TextureBrush. Обратите внимание, что конструктор TextureBrush требует ссылки на объект Image:
public class Mtcirforrii : Systero.Winda?. Forps.Fore {
II Нам потребуются эти переменные типа Brush для загрузки изображений private Brush texturerJTextSrjsh; private Vrush texturedeSroundBrush;
public HainFoniO
I
// Загружен изображение для текстуры форны
448 Глава 9 - Графика становится лучше (GDI+)
Image bGroundBrushlmage = new Bitmap (Col Lids.bmp"): texturedBGrounBrush - newTextureBrush(bBroundBrushlrnage);
Il Загружаем изображение для текстуры теста
Image textBrushImage = new BitmapC'Soap BuboTes.bmp");
texturedTextBrush = new TextureBrush(textBrushImagel:
)
Г
Теперь в нашем распоряжении есть два полностью готовых к употреблению объекта TextureBrush. Осталось привязать их к форме и тексту на форме соответственно:
private void - . sender. PairtEventArgs e)
{
Graphics g - e.Graphics: Rectangle г = ClientRectangle;
Il Выводим облака на форме
g. Fi11 Rectangle!texturedBGroundBrush. г);
I/ Текст должен быть больший - чтобы нощно было разглядеть текстуру g.DrawString ("Bitmaps as brushes! Way cool
new Font!"Arial". 60. FontStyle.Bold | FontStyle.Italic).
texturedTextBrush. r);
}
По сравнению с усилиями, которые потребуются, чтобы достичь того же эффекта с помощью только «голого» API или даже MFC, С# обеспечивает исключительную простоту и эффективность при работе с достаточно сложными эффектами. Однако у нас осталась еще одна весьма впечатляющая разновидность кисти: градиентная кисть.
Код приложения TexttiredBrush можно найти в подкаталоге Chapter 9.
Работаем с градиентными кистями
Последний тип кисти, который мы рассмотрим, — это градиентная кисть, представленная типом LiriearGradientFrubh, Основное назначение этого типа — обеспечить плавное смешение двух цветов для получения градиентного перехода. Работать с этим типом так же просто, как и с ранее рассмотренными типами Единственная особенность использования этого типа заключается в том, что мы должны указать направление цветового перехода при помощи значений из перечисления LinearGradientMode (табд. 9.24).
Таблица 9.24. Значения перечисления LinearGradientMode
Значение Описание (направление перехода)
Backward Diagonal Из верхнего правого угла в нижний левый
ForwardDiagonal Из верхнего левого угла в нижний правый
Horizontal Стееа направо
Vertical Сверху вниз
Обзор пространства имен System.Drawing.Drawing2D 449
Чтобы посмотреть на каждое из значений Li nearGradi entMode вдействии, мы пользуемся уже знакомым нам подходом, нарисовав на форме серию прямоугольников при помощи LinearGradientBrush. В качестве цветов, между которыми будег происходить переход, выберем CoI... Red и С olor. Slue:
private void MainForn PainUobjeci: sender. PaintEventArgs e)
І
Graphics g - e.Graphics;
Rectangle r = new RectangleClO. 10, 100, 100);
LinearGradientBrush theBrush int yOffSet = 10;
null;
II Получаем все значения перечисления LinearGradientMode Array obj = Enurn.GetValues<typeof(LinearGradientMode));
II Выводин прямоугольник, используя значения LinearGradientMode for (int X - 0; X < obj. Length; x++)
{
И Настраиваем кисть
LinearGradientMode temp - (LinearGradientMode)obj .GetValue(x): theBrush - new LinearGradientBrush(r. Color.Red. Color.Blue, temp);
Il Выводим имя значения перечисления
g.DrawStringCtemp.ToStringO. new FontC"Times New Roman", 10).
new SolidBrush(Color.Black). 0. yOffSet):
Il Заполняем пряиоугольник при помощи градиентной кисти g.FillRectanglettheBrush. 150. yOffSet, 200. 50); yOffSet += 80;
і' ¦
Результат выполнения программы представлен на рис. 9.22.
Houiontel
Vertical
ForwudDiagonal
BackwardDiagonal
Рис. 9.22. Применение градиентных кистей Код приложения Gradient В m sh можно найти в подкаталоге Chapter 9.
450 Глава 9 * Графика становится лучше (GDI+)
Вывод изображений
В предыдущих разделах мы уже познакомились с применением трех из четырех главных типов GDl+ (шрифтов, перьев и кистей). Нам осталось рассмотреть последний из основных типов: тип System.Drawing. Image, который используется для вывода изображений. Класс Image определяет множество свойств и методов, которые можно использовать для настройки параметров выводимого изображения. К примеру, при помощи свойств Width, Height и Size можно получить или установить размеры изображения.
Кроме того, в пространстве имен System. Drawing. Imaging определено множество типов для проведения сложных преобразований изображений. Если бы мы поставили задачу рассмотреть эти типы более или менее подробно, нам бы, пожалуй, потребовалась отдельная книга. Поэтому мы сосредоточимся только на наиболее часто используемых возможностях работы с изображениями.
Предыдущая << 1 .. 176 177 178 179 180 181 < 182 > 183 184 185 186 187 188 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100