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

 

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

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

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

Graphics g - g.Graphics:
Font tneFont = new Font(fontFace. 12 + swel lvalue): string message = "Hello GDI+":
Il Выводим сообщение "Hello GDI+ по центру форны float windowCenter = this.0isplayRectangle.width/2: SizeF stringSize - g.MeasureString(roessage. theFont); float startPos - windowCenter - (stringSize.Width/2):
434 Глава 9 Графика становится лучше (GDl+)
g.DMwStrliigCiiessage. theFont. new SoHoBrushfCoIor.Blue), startPos, 10):
II Выводим информацию об установленных шрифтах под занятой областью Rectangle myRect = new Rectangle{0, 100. ClientRectangle.Width.
Cl і entRectangle. Heіght):
Il Будем рисовать в этой области белым по черному g.FiHRectangle(newSolidBrushCCoIor,Black). myRect):
g.OrawStringtinstalledFonts. new Font ("Arial". 12). new SSolidBrush(Color.White).
nvyRect);
)
Вспомним, что «грязный прямоугольник» для неспокойной надписи "Hello GDI+" ограничивается верхними 100 пикселами клиентской части формы. Поскольку по событию ck перерисовывается только эта часть формы, нижняя часть (в которую выводится список установленных шрифтов) остается в неприкосновенности. В результате форма мерцает меньше.
И для порядка сделаем так, чтобы при возникновении события "+?$' is (то есть при изменении размера формы пользователем) нижняя часть формы перерисовывалась правильно:
private void FontFonn_K.e3izeCobjea sender. System.EventArgs e)
Rectangle myRect = new Rectangle(0, 100. ClientRectangle.Width.
ClientRectangle.Height);
Invalidate(myRect)
To, что должно получиться в итоге, представлено на рис. 9.13. Код приложения FontApp можно найти в подкаталоге Chapter 9.
File Configure
Font Ap р
'Л. х
Hello GDI+
Arial Anal Black Anal Narrow Anal Unicode MS Batang Book Antiqua Bookman Old Style Century Century Gothic Comic Sans MS Courier New Garamond Georgia Haettenschweiler Impact LuClda Console Lucida Sans Unicode Maffett Microsoft Sans Serif Monotype Corsiva MS Mincho MS Outlook Palatino Linotype PMingUU SimSun Symbol Tahorna Times New Roman Trebuchet MS Verdana Webdings Wingdings Wingdings 2 Wingdings 3
Рис. 9.13. Вывод информации об установленных в системе шрифтах
Класс FontDialog
Как вы, наверное, уже догадались, класс FontDi al од предназначен для вывода диалогового окна, в котором пользователь сможет выбрать нужный ему шрифт и установить требуемые параметры (рис. 9.14).
Работа со шрифтами 435
font
Font A'jlu.
.ucida Console
0 Geoigia
% Haetlerachweiler
О Impact
Regulai
Italic
!Bold
Lucida Sara Unicode O Marled
0 Miciosoft Sans Serif ЛІ
SjZK [20
24
lie
28 136
OK|
Cancel
І36 *—' [48 w ]
Eilecte - -W Strikeout V Underline
j і-Sample -
Sclipl:
Western
Рис. 9.14. «Полуфабрикатмое» диалоговое окно Font
Ранее в этой главе мы уже рассматривали полуфабр икатное диалоговое окно ColorDiaLog. Работа со всеми «полуфабрикатными» диалоговыми окнами очень похожа. Чтобы вызвать на экран окно FontDialog, необходимо точно так же воспользоваться методом ShowDialogO. Затем для получения информации о том, что пользователь выбрал, следует воспользоваться свойством Font. В качестве примера представим форму, которая будет работать с окном FontDialog (рис. 9.15) точно так же, как ранее созданная нами форма с окном для выбора цвета (то есть окно для выбора шрифта будет открываться при щелчке мышью в любой точке клиентской части формы):
public class . ¦ : System.windows. Forms.Form
private System.Windows. Forms, FontDialog fontDlg:
private Font currFont:
II Обработчик события Paint
private void FontDlgForm_Paint(object sender. PaintEventArgs
e)
{
public
Graphics g = e.Graphics: g.DrawStringCTesting. .
FontDlgForm()
currFont. new SolidBrushCColor.Black). 0. 0);
CenterToScreenO:
fontDlg = new System.Windows. Forms. FontDialogO; fontDlg.ShowHelp = true; Text = "Click on me to change the font"; currFont = new Forrtt "Times New Roman". 12):
]
II Обработчик события MouseUp
private void FontDlgForm_MouseUp(object sender. MouseEventArgs e)
436 Глава 9 • Графика становится лучше (GDI+)
{
currFont = fontDlg.Font: Invalidate;):
Рис. 9.15. Работаем с диалоговым окном FontDialog
Код приложения RmtDlgFonii можно найти в подкаталоге Chapter 9.
Обзор пространства имен System. Drawing. Drawing2D
Мы уже много раз использовали в наших примерах типы Реп (перо) и Brush (кисть). Самые простые варианты этих типов (которыми мы обычно и обходились) определены в пространстве имен System.Draw-ng. Однако есть гораздо более интересные перья и кисгп, и для их использования (так же как и множества других возможностей) нам необходимо обратиться к пространству имен System. Ога -wing.Drawing2D.
Это дополнительное пространство имен GDI+ (со значительно меньшим количеством типов, чем System Drawing) обеспечивает возможность устанавливать специальные «наконечники» для перьев (pen caps), создавать кисти, которые рисуют не сплошной полосой, а текстурами, производить различные векторные манипуляции с графическими объектами. Некоторые наиболее интересные типы этого пространства имен представлены в табл. 9.15.
Предыдущая << 1 .. 171 172 173 174 175 176 < 177 > 178 179 180 181 182 183 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100