Студопедия — ГРАФИЧЕСКИЙ ИНСТРУМЕНТАРИЙ
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ГРАФИЧЕСКИЙ ИНСТРУМЕНТАРИЙ






Богатство изобразительных возможностей Windows связано с так называемым дескриптором контекста графического устройства DC (Device Context) и тремя входящими в него инструментами - шрифтом, пером и кистью. В Delphi созданы специализированные классы-надстройки, существенно упрощающие использование графических инструментов Windows: для контекста - класс TCanvas,для шрифта - TFont, для пера - ТРеп и для кисти - TBrush.

Связанные с этими классами объекты автоматически создаются для всех видимых элементов и становятся доступны программе

через свойства Canvas, Font, Pen и Brush.

16.4.1. Класс TFont

С помощью класса TFont создается объект-шрифт для любого графического устройства (экрана, принтера, плоттера и т. п.).

Свойства класса:

property Color: TColor; Цвет шрифта
property Charset: TFontCharSet; Набор символов. Для русскоязычных программ это свойство обычно имеет значение DEFAULTCHARSET или russian charset. Используйте значение OEMCHARSET для отображения текста MS-DOS (альтернативная кодировка)
property FontAdapter: IChangeNotifier; Поставляет информацию о шрифте в компоненты ActveX
property Handle:hFont; Дескриптор шрифта. Используется при непосредственном обращении к API-функциям Windows
property Height: Integer; Высота шрифта в пикселях экрана
property Name: TFontName; Имя шрифта. По умолчанию имеет значение MS Sans Serif
property Pitch: TFontPitch;     Определяет способ расположения букв в тексте: значение fpFixed задает моноширинный текст, при котором каждая буква имеет одинаковую ширину; значение fpVariabel определяет ропорциональный текст, при котором ширина буквы зависит от ее начертания; fpDefault определяет ширину, принятую для текущего шрифта
property PixelPerInch: Integer; Определяет количество пикселей экрана на один дюйм реальной длины. Это свойство не следует изменять, т. к. оно используется системой для обеспечения соответствия экранного шрифта шрифту принтера
property Size: Integer; Высота шрифта в пунктах (1/72 дюйма). Изменение этого свойства автоматически изменяет свойство Height и наоборот.
property Style: TFontStyles; Стиль шрифта. Может принимать значение как комбинация следующих признаков: fsBold (жирный), fsltalic (курсив), fsUnderline (подчеркнутый), fsStrikeOut (перечеркнутый)

Для некоторых случаев может оказаться полезным метод

procedure Assign(Source: TPersistent);

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

16.4.2. Класс ТРеп

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

property Color: TColor; Цвет вычерчиваемых пером линий
property Handle: Inte ger; Дескриптор пера. Используется при непосредственном обращении к API-функциям Windows
property Mode: TPenMode; Определяет способ взаимодействия линий с фоном (см.ниже)
property Style: TPenStyle; Определяет стиль линий (см. рис. 16.2). Учитывается только для толщины линий 1 пиксель. Для толстых линий стиль всегда ps Solid (сплошная)
property Width: Integer; Толщина линий в пикселях экрана
Свойство Mode может принимать одно из следующих значений:
pmBlack Линии всегда черные. Свойства Color и Style игнорируются
pmWhite Линии всегда белые. Свойства Color и Style игнорируются
pmNop Цвет фона не меняется (линии не видны)
pmNot Инверсия цвета фона. Свойства Color и Style игнорируются
pmCopy Цвет линий определяется свойством Color пера
pmNotCopy Инверсия цвета пера. Свойство Style игнорируется
pmMergePenNot Комбинация цвета пера и инверсионного цвета фона
pmMaskPenNot Комбинация общих цветов для пера и инверсионного цвета фона. Свойство Style игнорируется
pmMergeNotPen Комбинация инверсионного цвета пера и фона
pmMaskNotPen Комбинация общих цветов для инверсионного цвета пера и фона. Свойство Style игнорируется
pmMerge Комбинация цветов пера и фона
pmNotMerge Инверсия цветов пера и фона. Свойство Style игнорируется
pmMask Общие цвета пера и фона
pmNotMask Инверсия общих цветов пера и фона
pmXor Объединение цветов пера и фона операцией XOR
pinNotXor Инверсия объединения цветов пера и фона операцией XOR

Стили линий показаны на рис. 16.2.

Рис. 16.2. Стили линий

16.4.3. Класс TBrush

Объекты класса TBrush (кисти) служат для заполнения внутреннего пространства замкнутых фигур.

Свойства класса:

property Bitmap: TBitmap; Содержит растровое изображение, которое будет использоваться кистью для заполнения. Если это свойство определено, свойства Color и Style игнорируются
property Color: TColor; Цвет кисти
property Handle: Integer; Дескриптор кисти. Используется при не посредственном обращении к API- функциям Windows
property Style: TBrushStyle; Стиль кисти (см. рис. 16.3)

 

16.4.4. Класс TCanvas

Этот класс создает “канву”, на которой можно рисовать чертежными инструментами - пером, кистью и шрифтом. Объекты класса ЕСаnvas автоматически создаются для всех видимых компонентов, которые должны уметь нарисовать себя. Они инкапсулируют объекты Font, pen, Brush, а также многочисленные методы, использующие эти объекты.

Свойства класса:

property Brush: TBrush; property ClipRect: TRect; Объект-кисть Определяет текущие размеры области, нуждающейся в прорисовке
property CopyMode: TCopyMode; Устанавливает способ взаимодействия растрового изображения с цветом фона
property Font: TFont; Объект-шрифт
property Handle: Integer; Дескриптор канвы. Используется при непосредственном обращении к API-функциям Windows
property LockCount: In tegers;     Счетчик блокировок канвы. Увеличивается на единицу при каждом обращении к методу Lock и уменьшается на единицу при обращении к Unlock
property Pen: TPen; Объект-перо
property PenPos:TPoint; Определяет текущее положение пера в пикселях относительно левого верхнего угла канвы
property Pixels[X,Y:Integer]: TColor; Массив пикселей канвы    

Свойство copyMode используется при копировании части одной канвы (источника) в другую (приемник) методом copyRect и может иметь одно из следующих значений:

cmBlackness Заполняет область рисования черным цветом
cmDestInvert Заполняет область рисования инверсным цветом фона
cmMergeCopy Объединяет изображение на канве и копируемое изображение операцией and
cmMergePaint Объединяет изображение на канве и копируемое изображение операцией OR
cmNotSrcCopy Копирует на канву инверсное изображение источника
cmNotSrcErase Объединяет изображение на канве и копируемое изображение операцией OR и инвертирует полученное
cmPatCopy Копирует образец источника
cmPatInvert     Комбинирует образец источника с изображением на канве с помощью операции XOR
cmPatPaint Комбинирует изображение источника с его образцом с помощью операции OR, затем полученное объединяется с изображением на канве также с помощью OR
cmSrcAnd   Объединяет изображение источника и канвы с помощью операции AND
cmSrcCopy Копирует изображение источника на канву
cmSrcErase Инвертирует изображение на канве и объединяет результат с изображением источника операцией AND
cmSrcInvert Объединяет изображение на канве и источник операцией XOR
cmSrcPaint Объединяет изображение на канве и источник операцией OR
cmWhitness Заполняет область рисования белым цветом

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

Методы класса:

procedure Arc(X1, Y1, X2, Y2, ХЗ, Y3, Х4, Y4: Integer); Чертит дугу эллипса в охватывающем прямоугольнике (Xl,Yl)-(X2,Y2). Начало дуги лежит на пересечении эллипса и луча, проведенного из его центра в точку (ХЗ, Y3), а конец - на пересечении с лучом из центра в точку (Х4, Y4). Дуга чертится против часовой стрелки (см. рис. 16.4, а)
procedure BrushCopy (const Dest: TRect; Bitmap: TBitmap; const Source: TRect; Color: TColor); Копирует часть изображения Source на участок канвы Dest. Color указывает цвет в Dest, который должен заменяться на цвет кисти канвы. Метод введен для совместимости с ранними версиями Delphi. Вместо него следует пользоваться классом Т Image List
procedure Chord(XI, Yl, X2, Y2, X3, Y3, Чертит сегмент эллипса в охватывающем прямоуголь нике (XI, У1) - (X2, Y2). Начало дуги сегмента лежит на пересечении эллипса и луча, проведенного из его центра в точку (X3, Y3), а конец - на пересечении с лучом из центра в точку (X4, Y4). Дуга сегмента чертится против часовой стрелки, а начальная и конечная точки дуги соединяются прямой (см. рис. 16.4, б)
procedure CopyRect (Dest: TRect; Canvas: TCanvas;Source: TRect); Копирует изображение Source канвы Canvas в участок Dest текущей канвы. При этом разнообразные специальные эффекты достигаются с помощью свойства CopyMode
procedure Draw(X, Y:Integer; Graphic:TGraphic); Осуществляет прорисовку графического объекта Graphic так, чтобы левый верхний угол объекта расположился в точке (X, Y)
procedure DrawFocusRect (const Rect:TRect); Прорисовывает прямоугольник с помощью операции XOR, поэтому повторная прорисовка уничтожает ранее вычерченный прямоугольник. Используется в основном для прорисовки нестандартных интерфейсных элементов при получении ими фокуса ввода и при потере его
procedure Ellipse(XI, Yl, X2, Y2: Integers; Чертит эллипс в охватывающем прямоугольнике (XI, Yl) - (X2, Y2). Заполняет внутреннее пространство эллипса текущей кистью
procedure FillRect(const Rect: TRect); Заполняет текущей кистью прямоугольную область Rect, включая ее левую и верхнюю границы, но не затрагивая правую и нижнюю границы
procedure Flood- Fill(X, Y: Integer; Color: TColor; Fill Style: TFillStyle); Производит заливку канвы текущей кистью. Залив ка начинается с точки (X, Y) и распространяется вовсе стороны от нее. Если FillStyle=fsSurface, заливка распространяется на все соседние точки с цветом Color. Если FillStyle=fsBorder, наоборот, заливка прекращается на точках с этим цветом
procedure FrameRect(const Rect: TRect); Очерчивает границы прямоугольника Rect текущей кистью толщиной в 1 пиксель без заполнения внутренней части прямоугольника
procedure LineTo(X, Y: Integer); Чертит линию от текущего положения пера до точки (X,Y)
procedure Lock;     Блокирует канву в многопоточных приложениях для предотвращения использования канвы в других по токах команд
procedure MoveTo(X,Y: Integer); Перемещает перо в положение (X, Y) без вычерчивания линий
procedure Pie(XI, Yl, X2, Y2, X3, Y3, X4, Y4: Longint);   Рисует сектор эллипса в охватывающем прямоугольнике (XI, Yl) - (X2, Y2). Начало дуги лежит на пересечении эллипса и луча, проведенного из его центра в точку (X3, Y3), а конец - на пересечении случом из центра в точку (X4, Y4). Дуга чертится против часовой стрелки. Начало и конец дуги соединяются прямыми с ее центром (см. рис. 16.4, в)
procedure Polygon. (Points: array of TPoint);   Вычерчивает пером многоугольник по точкам, заданным в массиве Points. Конечная точка соединяется с начальной и многоугольник заполняется кистью. Без заполнения используйте - Polyline
procedure Polyline (Points: array of TPoint); Вычерчивает пером ломаную прямую по точкам, заданным в массиве Points    
procedure Rectan gle(XI, Yl, X2, Y2: Integer); Вычерчивает и заполняет прямоугольник (XI, Yl) -S(X2, Y2). Для вычерчивания без заполнения используйте FrameRect или Polyline
procedure Refresh; Устанавливает в канве умалчиваемые шрифт и кисть
procedure RoundRect(Xl, Yl, X2,Y2, X3, Y3: Inte ger); Вычерчивает и заполняет прямоугольник (XI,Yl)- (X2, Y2) со скругленными углами. Прямоугольник (XI, Yl) - (X3, Y3) определяет дугу эллипса для округления углов (см. рис. 16.4, г)
procedure Stretch Draw (const Rect:TRect; Graphic: TGraphic); Вычерчивает и при необходимости масштабирует графический объект Graphic так, чтобы он полностью занял прямоугольник Rect  
function TextExtent (const Text:String): TSize; Возвращает ширину и высоту прямоугольника, охватывающего текстовую строку Text  
function TextHeight (const Text: String): Integer; Возвращает высоту прямоугольника, охватывающего текстовую строку Text  
procedure TextOut(X, Y: Integer; const Text: String); Выводит текстовую строку Text так, чтобы левый верхний угол прямоугольника, охватывающего текст, располагался в точке (X, Y)
procedure TextRect(Rect: TRect; X, Y: Integer; const Text: String); Выводит текстовую строку Text так, чтобы левый верхний угол прямоугольника, охватывающего текст, располагался в точке (х, Y). Если при этом какая-либо часть надписи выходит из границ прямоугольника Rect, она отсекается и не будет видна
function TextWidth (const Text:String): Integer; Возвращает ширину прямоугольника, охватывающего текстовую строку Text  
function TryLock: Boolean; Пытается заблокировать канву. Если она не заблокирована другим потоком команд, - True, в противном случае ничего не делает и возвращает False
procedure Unlock; Уменьшает на 1 счетчик блокировок канвы

16.4.4.1. Дополнительные возможности API-функций

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







Дата добавления: 2015-10-18; просмотров: 685. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия