Программирование >>  Программирование с использованием ajax 

1 ... 347 348 349 [ 350 ] 351 352 353 ... 396



Вас> ф*с

Рис. 33.17. Окно с гистограммой заслонено другим окном


Рис. 33.18. Окно с гистограммой после закрытия другого окна

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

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



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

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

Для получения дополнительной информации обратитесь к описанию свойства Clip класса Graphics в документации каркаса .NET.

Пространство имен Sys tem. Dr awing. Drawing2D

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

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

Это пространство имен включает перечисленные ниже классы.

□ Усовершенствованные кисти. Мы уже рассмотрели кисть LinearGradientBrush и вскользь затронули кисть PathGradientBrush. Существует также кисть HatchBrush, которая выполняет прорисовку в стиле штриховки, используя цвета переднего плана и фона.

□ Класс Matrix. Этот класс определяет геометрические преобразования. Он позволяет выполнять преобразования применительно к операциям рисования. Например, используя класс Matrix, можно нарисовать скошенный овал.

□ Класс GraphicsPath. Мы уже вскользь затрагивали этот класс. С его помощью можно определить сложный путь и выполнить рисование сразу всего пути.

Пространство имен System.Drawing, imaging

Классы этого пространства имен предоставляют расширенную поддержку работы с изображениями, такую как работа с метафайлами. Метафайл описывает последовательность графических операций, которые могут быть записаны и впоследствии воспроизведены, и пространство имен System. Drawing. Imaging содержит ряд классов, которые позволяют расширить возможности CDK для обеспечения поддержки других форматов изображений.

Резюме

В этой главе был описан ряд классов пространства имен System. Drawing. Мы выяснили, как класс Graphics инкапсулирует поверхность рисования, и рассмотрели механизм прорисовки, в котором событие OnPaint вызывается каждый раз, когда окно требует перерисовки.



Мы рассмотрели цвета и системы координат и структуры Point, Size и Rectangle, используемые для указания позиций и размеров поверхностей рисования. Затем мы рассмотрели ряд примеров рисования линий, форм, текста и изображений.

В этой главе рассмотрены следующие вопросы.

□ Класс Graphics.

□ Структура Color.

□ Рисование линий посредством использования класса Реп.

□ Рисование форм посредством использования класса Brush.

□ Прорисовка текста посредством использования класса Font.

□ Прорисовка изображений посредством использования класса Bitmap.

□ Выполнение рисования в изображения (двойная буферизация).

Мы выяснили также, что очень важно вызывать метод Dispose () применительно к следующим классам по завершении работы с ними:

□ Graphics

□ Pen

□ Brush

□ Font

□ Image

И, наконец, были кратко описаны дополнительные возможности, предоставляемые каркасом .NET Franiework.

Упражнения

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

2. Создайте приложение, которое отображает трехцветный светофор. Цвет светофора должен меняться, когда пользователь щелкает на нем.

3. Создайте приложение, принимающее RGB-значения. Соответствующий цвет должен отображаться в прямоугольнике. Обеспечьте отображение HSB-значе-ний для данного цвета.



1 ... 347 348 349 [ 350 ] 351 352 353 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика