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

С# - Ватсон К.

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


Запустив измененный код, мы увцднм окно, представленное на рисунке слева.

Вызов метода Drawstring о аналогичен предыдущим вызовам этого метода. В качестве аргументов ему передается собственно текст, шрифт, созданная нами кисть и ограничивающий прямоугольник:

g.DrawStringl'Hello Image', trFont, tBrush,

CiientRectangie);

Двойная буферизация

Мы уже коротко касались проблем, которые возникают в тех случаях, когда процедура рисования требует слишком

много времени н пользователю приходится очень долго ожидать, пока рисунок будет выведен на экран полностью. Как мы уже объясняли, решение этой проблемы заключается в создании образа, который затем — после

завершения всех графических операций над ним — целиком выводится ? окно.

Практикум: пример без использования двойной буферизации

Использованная в данном примере программа OnPaint о рисует большое количество линий цветом, выбираемым случайным образом. Когда вы запускаете эту программу, то можете увидеть саму процедуру рисования (если, конечно, у вас не слишком быстродействующий компьютер):

protected override void OnPaint (PaintEventArgs e)

(

Graphics g = e.Graphical

Random r s new Random ();

g.FillRectangle(Brushes.White, CiientRectangie);

for [int x = 0; x < ClientRectangle.Widthj x++)

(

for (int у = Oj у < CiientRectangie.Height; у +- 10)

{

Color с = Color.FromArgb(r.Next(255), r.Next(255),

' r.Next(255)); .

using (Pen p = new Pen(c, 1)) -

(

g.DrawLine (p, new Point(Q, 0), newpoint(x, y))j

)

)

)

450

Глада 16

Дополнительные возможности GDI+

Мы только слегка затронули многие возможности, предоставляемые GDI+. На самом деле, его возможности намного шире — настолько, что их невозможно охватить в одной главе. Однако, прежде чем завершить эту главу, мы познакомимся с некоторыми из дополнительных возможностей.

Вырезание отдельных частей рисунков

Существуют три области, для которых возможность работать с частями рисунков оказывается важной.

Во-первых, при вызове события OnPainto ему кроме объекта Graphics передается вырезанный прямоугольник. При использовании простых процедур рисования можно не обращать особого внимания на этот вырезанный прямоугольник, однако если используется сложная процедура, требующая большого количества времени, то время рисования может быть уменьшено за счет проверки вырезанного прямоугольника перед выполнением соответствующих операций. Нам известен ограничивающий прямоугольник любого графического изображения или фигуры, которые мы рисуем. Если этот прямоугольник не пересекается с вырезанным, то можно не-выполнять данную графическую операцию.

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

а После того как калькулятор будет закрыт, а операционная система Windows восстановит границу оставшегося окна, окно с диаграммой примет вид, показанный на рисунке слева.

В этот момент будет вызвано событие OnPainto для окна с диаграммой, при этом в качестве вырезанного прямоугольника ему передается область, которую занимало закрытое к этому моменту окно (на рисунке закрашена черным цветом). Теперь необходимо заново нарисовать только эту часть окна с диаграммой; более того, если метод OnPainto и попытается осуществить графический вывод в какой-либо участок рисунка, отличный от того, который был заслонен другим окном, он не сумеет этого сделать. Любые графи-ческне операции, выполняемые нм, будут игнорироваться. У окна с диаграммой имеется информация об ограничивающем прямоугольнике той части диаграммы, которая относится к автомобилям, и соответственно есть возможность определить, пересекается ли этот прямоугольник с той частью окна, которая была заслонена другим окном. Убедившись в том, что эти две области не пересекаются, программа рисования не будет выполнять повторное рисование тон части экрана, которая имеет отношение к автомобилям.

Иногда, когда в процессе рисования возникает необходимость нарисовать только часть какой-либо фигуры или изображения, зачастую оказывается проще нарисовать всю фигуру целиком, а затем вырезать ту часть, которую мы хотим увидеть. Если есть некий образ, то может возникнуть необходимость вывести на экран лишь некоторую его часть. Вместо того чтобы создавать новый образ, который
Введение в GDI+___________________________________________________ 45 j

будет представлять собой требуемую часть исходного образа, можно просто определить вырезаемый прямоугольник, а затем нарисовать этот образ таким образом, чтобы только интересующая нас часть этого рисунка была видна в вырезанной области. Этот способ следует использовать при создании бегущей строки. Последовательно изменяя место, в котором выводится текст, и одновременно задавая вырезаемый прямоугольник, можно получить эффект движущегося в горизонтальном направлении текста.

Наконец, существует способ, который позволяет создавать “окно просмотра" рисунка, имеющего большие размеры. Пользователю предоставляется возможность перемещать это окно по всему рисунку с помощью мыши или используя линейки прокрутки. Окно просмотра может также перемещаться программным путем в зависимости от каких-либо других действий, выполняемых пользователем. В этом случае задание вырезаемого прямоугольника н вывод в него только того, что он позволяет увидеть, является хорошим приемом.
Предыдущая << 1 .. 201 202 203 204 205 206 < 207 > 208 209 210 211 212 213 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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