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

1 ... 343 344 345 [ 346 ] 347 348 349 ... 396


□ пункт (V72 дюйма)

□ дисплей (V75 дюйма)

□ документ (Узоо дюйма)

□ дюйм

□ миллиметр

□ пиксель

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

При прорисовке текста с применением конкретного шрифта на конкретной поверхности рисования часто требуется знать ширину пикселей указанной строки текста. Понятно, почему различные шрифты будут оказывать влияние на ширину пикселей строки - более мелкий шрифт будет приводить к подсвечиванию меньшего количества пикселей. Однако столь же важно знать особенности поверхности рисования, поскольку пиксельное разрешение различных поверхностей рисования различно. Как правило, разрешение экрана составляет 72 пикселя на дюйм. Принтеры поддерживают разрешения 300 пикселей на дюйм, 600 пикселей на дюйм и выше. Для вычисления ширины текста при использовании данного шрифта служит метод MeasureString О объекта Graphics. Свойство Style определяет, является ли шрифт курсивным, полужирным, зачеркнутым или подчеркнутым.

Для объектов Font всегда вызывайте метод Dispose ().

Для создаваемых объектов Font важно вызывать метод Dispose () либо использовать блок using: в противном случае приложение может истощать ресурсы Windows.

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

Класс StringFormat инкапсулирует информацию о размещении текста, в том числе о выравнивании и межстрочном интервале. Следующий пример демонстрирует выравнивание текста по правому краю и по центру с использованием класса StringFormat. В этом практическом занятии мы создадим объект Font и с его помощью выполним прорисовку текста.

S?*f5 ® Прорисовка текста

Чтобы на практике проверить прорисовку текста рядом способов, выполните следующие действия.

1. Создайте новое Windows-приложение по имени DrawText в каталоге С: \

BegVCSharp\Chapter33.

2. В конструктор класса Forml после вызова метода InitializeComponent () добавьте вызов метода SetStyleO. Потребуется также изменить границы окна, чтобы обеспечить достаточно места для отображения нужного текста. Измененный конструктор выглядит следующим образом:



public Forml() {

InitializeComponent();

SetStyle(ControlStyles.Opaque, true);

Bounds = new Rectangle (0, 0, 500, 300) ;

3. Добавьте в свой класс метод OnPaint ():

protected override void OnPaint(PaintEventArgs e) {

Graphics g = e.Graphics; int у = 0;

g.FillRectangle(Brushes.White, ClientRectangle);

Прорисовка текста, выровненного по левому краю. Rectangle rect = new Rectangle(О, у, 400, Font.Height); g.DrawRectangle(Pens.Blue, rect);

g.DrawStringCThis text is left justified. . Font, Brushes.Black, rect) у += Font.Height + 20;

Прорисовка текста, выровненного по правому краю.

Font aFont = new Font( Arial , 16, FontStyle.Bold I FontStyle.Italic); rect = new Rectangle (0, y, 400, aFont. Height) ; g.DrawRectangle(Pens.Blue, rect);

StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Far;

g.DrawString( This text is right justified. , aFont, Brushes.Blue,

rect, sf) ; у += aFont.Height + 20;

Вызов метода Dispose () вручную. aFont.Dispose ();

Прорисовка текста, выровненного по центру.

Font cFont = new Font( Courier New , 12, FontStyle.Underline);

rect = new Rectangle (0, y, 400, cFont.Height);

g.DrawRectangle(Pens.Blue, rect);

sf = new StringFormat 0 ;

sf.Alignment = StringAlignment.Center;

g.DrawString( This text is centered and underlined. , cFont,

Brushes.Red, rect, sf) ; у += cFont.Height + 20;

Вызов метода Dispose () вручную. cFont.Dispose ();

Прорисовка многострочного текста. Font trFont = new Font( Times New Roman , 12); rect = new Rectangle(0, y, 400, trFont.Height * 3); g.DrawRectangle(Pens.Blue, rect);

String longString = This text is much longer, and drawn ; longString += into a rectangle that is higher than ; longString += one line, so that it will wrap. It is ; longString += very easy to wrap text using GDI+. ; g.DrawString(longString, trFont, Brushes.Black, rect);

Вызов метода Dispose() вручную. trFont.Dispose();



4. Если теперь скомпилировать и запустить этот код, будет создано окно, показанное на рис. 33.11.

Th>s tCKt IS left mstrfied

This text is rightjustifJed,

This tt-Mt 13 -iittel -Я11 i 4iu!-r ll n-fd .

Ths text IS much longer, and drawn into a rectangle that is higher than one line, so that it will wrap It is very easy to wrap text using GDI+

Puc. 33.11. Выравнивание текста no правому краю и по центру с использованием класса StringForma t

Описание полученных результатов

Этот пример содержит несколько наиболее часто выполняемых операций прорисовки текста. Как обычно, для удобства мы присваиваем локальной переменной ссылку на объект Graphics. Фон окна будет окрашен белым цветом.

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

Прорисовка текста, выровненного по левому краю. Rectangle rect = new Rectangle(О, у, 400, Font.Height); g.DrawRectangle(Pens.Blue, rect);

g.DrawString ( This text is left justified. . Font, Brushes.Black, rect);

При этом нужно указать только прямоугольник, в котором будет отображаться текст. Базовая линия шрифта - это воображаемая линия, на которой расположено большинство символов шрифта. GDI+ и сам шрифт определяют расположение базовой линии - мы никак не можем влиять на него.

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

При первой прорисовке текста в этом примере применялся шрифт, заданный для формы по умолчанию. Этот шрифт указан в свойстве Font, унаследованном из класса

Control:

g.DrawString( This is a left justified string. . Font, Brushes.Black, rect);

Для следующей прорисовки текста в этом примере создается новый экземпляр объекта Font:

Font aFont = new Font( Arial , 16, FontStyle.Bold FontStyle.Italic);

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



1 ... 343 344 345 [ 346 ] 347 348 349 ... 396

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