Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 202

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 196 197 198 199 200 201 < 202 > 203 204 205 206 207 208 .. 404 >> Следующая


protected override void OnPaint (FftintEventArgs e)

<

Graphics в “ e.Graphics;

using (Pen blackPen = new Pen(Color.Black, lit {

for (int у = 0; у < ClientRectangle.Height;

у += ClientRectangle,Height / 10)

I

g.DrawLinetblacWen, new Point(0, 0),

new Point(ClientRectangle.Width, y))j

)

1

Теперь нажмите F5 и запустите программу. В результате работы этой программы будет создано окно, представленное иа рисунке слева.

Как это работает

В приведенной выше программе в самом начале метода создается экземпляр класса Graphics, для инициализации которого используется класс PaintEventArgs:

Graphics g = е.Graphics;

Поскольку мы получаем ссылку на объект Graphics и нам не приходится создавать его самим, то нет необходимости явно вызывать для него метод Dispose (). Поскольку в данном
436

Глава 16

примере мы используем потенциально потребляющий много ресурсов объект Реп, то весь остальной код мы помещаем внутрь конструкции uaingj, что гарантирует уничтожение объекта при первой же возможности.

При создании объекта реп мы передаем его конструктору в качестве параметров цвет и ширину линии. В данном примере в качестве цвета выбран черный, а ширина устанавливается равной единице. Вот строка кода, предназначенная для создания этого объекта:

using (Реп ЫаскРеп = new Pen (Color. Black, 1))

Каждое окно, в котором что-либо рисуется, обладает пользовательской областью, обрамляемой границей и в точности соответствующей области, в которой может располагаться рисунок. Получить пользовательскую область можно с помощью ciientRectangie — общего свойства формы, доступного в режиме “только чтение" (которое наследуется от класса control). В нем содержатся размеры (ширина и высота) пользовательской области окна, в которую осуществляется графический вывод. Следующий код обращается к свойству ciientRectangie;

for (int У = 0; у < CiientRectangie.Height;

у += CiientRectangie.Height / 10)

При рисовании каждой линии только что созданному объекту реп передаются начальная точка и конечная точка этой линии:

g,DrawLine(blackPen, new Point{0, 0),

new Point(CiientRectangie.Width, y));

Всегда вызывайте метод DiapoaeO для объектов p«n.

Как И ДЛЯ объектов Graphics, необходимо либо ВЫЗЫВаТЬ метод Dispose() для объектов реп после завершения его использования, либо использовать для работы с иими конструкцию using, в противном случае приложение может исчерпать ресурсы системы.

В данном примере мы используем объект реп. Однако существует более простая возможность получить такой объект. Класс Pens содержит свойства, необходимые для получения приблизительно 150 объектов Реп — по одному на каждый из предварительно описанных цветов. Следующая версия нашего примера работает аналогично предшествующей, только вместо создания объекта Реп мы извлекаем его ИЗ Класса Pens;

protected override void QnPaint (PaintEventArge e)

I

for (lnt у = 0; у < CiientRectangie.Height;

у +* CiientRectangie.Height / 10)

{

e.Graphics.DrawLine(Vina.Black, new Point(0, 0),

new Point(CiientRectangie.Width, y)) ;

)

)

В данном случае объект Реп создается не нами, поэтому нет необходимости вызывать метод Dispose(),
Введение о GDI+

437

Рисование фигур с помощью класса Brush

Следующий пример посвящен использованию класса Brush (кисть) для рисования различных фигур, таких как прямоугольники, эллипсы, секторы и многоугольники. K^iacc Brush — это абстрактный класс. Для создания экземпляра класса Brush мы используем классы, производные от класса Brush, такие как SolidBrush, TextureBrush И LinearGradicntBrush. Класс Brush находится В пространстве имен System.Drawing. Классы TextureBrush И LinearGradientBrush находятся В пространстве имен System.Drawing.Drawing2D. Вот что позволяет делать каждый из этих классов:

? Soiidflrush заполняет фигуру сплошным цветом.

? TextureBrush позволяет заполнять фигуру рисунком, хранящемся в двоичном представлении. При создании такой кисти требуется также задавать обрамляющий прямоугольник и режим обрамления. Обрамляющий прямоугольник определяет, какую порцию рисунка мы должны использовать при рисовании,— использовать весь рисунок целиком совершенно необязательно, Для режима обрамления существует несколько возможностей, включая Tile (черепица) — TileFiipx,

TiieFiipY и TiieFiipxv, позволяющих последовательно разбивать Изображение На Отдельные КВадраТЫ. С ПОМОЩЬЮ TextureBrush можио создавать очень интересные и весьма впечатляющие эффекты,

? LinearGradientBrush содержит кисть, которая позволяет рисовать плавный переход от одного цвета к другому, причем первый цвет переходит во второй под определенным углом. Углы при этом задаются в градусах. Угол, равный 0°, означает, что переход от одного цвета

к другому осуществляется слева направо. Угол, равный 90*, означает, что переход от одного цвета к другому осуществляется сверху винз.

Существует еще одна разновидность кисти — PathGradientBrush, позволяющая создавать сложный эффект затенения, при котором используется изменение цвета от середины рисуемого пути к его краям. Более детально ознакомиться с этим классом вы можете в разделе PathGradientBrush .NET Framework Reference (руководство no .NET Framework),
Предыдущая << 1 .. 196 197 198 199 200 201 < 202 > 203 204 205 206 207 208 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.