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

 

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

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

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 164 165 166 167 168 169 < 170 > 171 172 173 174 175 176 .. 320 >> Следующая

Таблица 9.7. Члены класса Region Член Назначение
Complement^ .ExdudeC) GetBoundsO IntersectO
IsEmptyQ MakeErnptyQ
IsInfiniteO MakelnfiniteO
TransformO
Дополняет объект Region другими графическими объектами, которые не пересекаются с исходным объектом Region
Исключает область, занимаемую другим графическим объектом, из области
объекта Region
Возвращает объект класса RectangleF, представляющий прямоугольник, в который точно вписана область, занимаемая объектом Region
Перегружен. Уменьшает область, занимаемую исходным объектом Regon, до области наложения друг на друга исходного и указанного пользователем объектов Region
Позволяют определить, имеет ли область, занимаема я данным объектом Region, нулевой размер, или установить нулевой размер для области Region
Позволяют определить, является ли область, занимаемая объектом Regon,
бесконечной, или установить бесконечный размер для данной области
Преобразует область объекта Region на основе передаваемого объекта Matrix
продолжение гО
416 Глава 9 • Графика становится лучше (GDI+)
Translated Сдвигает координаты объекта Region на указанную величину
Unon() Объединяет указанный объект Region с другим графическим объектом
Хог() Объединяет указанный объект Region с другим графическим объектом, исключая
при этом область пересечения этих двух объектов
Мы получили общее представление о служебных типах пространства имен System. Dri's" ng. На протяжении этой главы мы еще не раз встретимся с этими типами. А сейчас — вперед, к сеансам вывода графики в .NETl
Код приложения L'LilTypes можно найти в подкаталоге Chapter 9.
Сеансы вывода графики
В предыдущей главе мы говорили о том, что в классе Control определен виртуальный метод OnPai BSC1J1 Если мы хотим, чтобы на главной форме нашего приложения (или элементе управления, или любом другом классе, производном от Control) выводилась графика, нам потребуется заместить этот метод и извлечь объект Graph і cs из передаваемых этому методу параметров:
public class MainFcrm : Form {
public MainFornio 'і
CenterToScreenO;
iris,Text. - "Basic Paint Form";
}
public static void Main(string[j ergs) {
Application. Run (new MainFormO);
t
protected override void e)
{
Graphics g • e.Graphics;
g,DrawStNng( "Неї IcGDI+". new Font ("Tines New Roman", 20).
new SolidBnjsh(Color.Black). 0. 0);
}
Для вывода изображения на форму в нашем распоряжении есть два способа. Первый (который приведен выше) заключается в том, что мы напрямую дописываем необходимую логику в метод ОпРаіпШ. Второй (более предпочтительный) предусматривает перехват события Pai nt. Для реализации второго способа предыдущее определение класса можно изменить следующим образом:
public class MainForm : Fom I
public MainFormO {
Таблица 9.7 {продолжение) Член Назначение
Сеансы вывода графики 417
// Добавляем обработчик события
this. Paint += new System.Windows. Forms.PaintEventHandler(MainForm_Paint):
}
И Обратите вникание на сигнатуру обработчика событий public void MainForm_Paint(object sender. PaintEventArgs e) {
Graphics g • e.Graphics:
}
public static void Mrtin(striig[j args) {
Application. Run(new MainFormO);
I
Вне зависимости от того, какой метод мы выберем, механизм вывода графики будет одним и тем же. Как только наше приложение станет «грязньш». в очереди сообщений для этого приложения появится специальное сообщение, инициирующее сеанс вывода графики (перерисовки). Приложение становится «грязным*. тогда, когда изменяются его размеры, когда его окно полностью или частично
окном другого приложения, когда оно восстанавливается из мизированного состояния. В результате либо вызывается метод OnPai nt С), либо срабатывает наш обработчик события Paint.
Как сделать клиентскую область вашего приложения «недействительной»
Иногда возникает необходимость инициировать перерисовку изображения на форме вручную (иными словами, программным образом поместить в очередь ний сообщение о необходимости перерисовки). Например, в нашей программе может быть предусмотрено диалоговое окно для выбора пользователем ния. После того как пользователь выберет то, что ему нужно, форму необходимо будет перерисовать, чтобы отобразить выбранное изображение.
Для того чтобы инициировать перерисовку формы программным образом, не пользуется метод Вызов этого метода может выглядеть так;
public class Mai nFэта ; Form
{
private void MainForm Painttobject sender. PaintEventArgs {
Graphics g - g.Graphics:
II Логика для вывода изображения
}
private void GetNewBltirapO {
И Выводим окно диалога и получаен выбранное пользователем изображение
// А теперь перерисовываем клиентскую часть формы InvalidateO:
}
)
418 Глава 9 • Графика становится лучше (GDI+)
Существует множество перегруженных вариантов метода Irwal 1 date() .Например, мы можем указать конкретную прямоугольную область, подлежащую перерисовке, вместо всей клиентской части формы (она перерисовывается по умолчанию). Если нам потребуется в приложении перерисовать лишь верхнюю левую часть формы, выглядеть это может так:
Предыдущая << 1 .. 164 165 166 167 168 169 < 170 > 171 172 173 174 175 176 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100