Рассматриваемый графический интерфейс базируется на применении класса TCanvas, который является свойством многих визуальных компонентов среды Delphi.
Если у компонента канва (свойство типа TCanva) отсутствует, то на его поверхности рисовать нельзя. На поверхности компонентов, имеющих канву, можно печатать тексты, рисовать пером, красить кистью и отображать картинки.
Канва предоставляет «холст» (контекст графического устройства GDI), инструменты для рисования (перо, кисть, шрифт), а так же набор функций по изображению рисунков и типовых геометрических фигур типа эллипса, линии и т.п. Канвой обладают такие компоненты, как форма (TForm), наследники класса TgraphicControl – метка (TLabel), панель для рисования (TPaintBox) и др.
Шрифт инкапсулируется классом TFont. В нём задаются только горизонтальные шрифты (для других вариантов нужно непосредственно применять API-функции Windows). Основные свойства TFont:
Style – особенности начертания шрифта: жирный (fsBold), курсив (fsItalic), подчёркнутый (fsUnderLine), перечёркнутый (fsStrikeOut). Каждый из этих вариантов совместим с другим, то есть шрифт может быть одновременно и жирным, и подчёркнутым, и т.д.
|
|
Color – задаёт любой из допустимых в системе цветов в интервале TColor = - (COLOR_ENDCOLORS+1)..$2FFFFFF. Для прямого определения номера цвета по его составляющим красного, зелёного и синего компонентов используется функция RGB (R, G, B). Интенсивности R, G и B задаются числами в интервале 0..255. Пример: Color:= RGB (0, 127, 255). Для 16 стандартных цветов используются константы с префиксом cl. Например константа clBlack определяет чёрный цвет.
Pitch – способ установки ширины знаков шрифта: моно-ширинный (fpFixed), с переменной шириной (fpVariable), когда на знак «i» выделяется меньшая ширина, чем на знак «w», и по определённому начертанию шрифта (fpDefault).
Height – высота шрифта в пикселях.
Handle – дескриптор шрифта.
PixelsPerInch – число точек на дюйм в контексте экрана. Изменять это свойство не рекомендуется, чтобы не искажать изображение.
Size – размер шрифта в пунктах, связанный с PixelsPerInch: Size=Height*72/PixelsPerInch.
По умолчанию шрифт устанавливается системным (в частности, чёрного цвета).
Перо (класс TPen) задаёт свойства вычерчиваемых линий с помощью следующих свойств:
Color – цвет пера (аналогично цвету шрифта).
Mode – одна из 16 стандартных операций Windows для взаимодействия пера с поверхностью. Обычно задается константой с префиксом pm. Например константа pmMerge задает режим суммирования цветов пера и экрана.
Style – один из 7 стандартных для Windows стилей изображения линии. Задается константой с префиксом ps. Например константа psSolid задает сплошную линию.
Width – толщина пера в пикселях.
Handle – дескриптор пера.
По умолчанию перо имеет единичную толщину, чёрный цвет и сплошное изображение. При толщине, отличной от единицы, линия может иметь только сплошной стиль.
|
|
Кисть (класс TBrush) задаёт способ закраски замкнутых фигур с помощью следующих свойств:
Color – цвет кисти.
Style – задаёт один из 8 стилей кисти. Определяется константой с префиксом bs. Например константа bsSolid задаёт сплошную закраску.
BitMap – задаваемая программистом битовая карта для закраски поверхности определённым орнаментом. Если это свойство задано, то Color и Style игнорируются.
Handle – дескриптор кисти.
По умолчанию кисть имеет белый цвет при сплошной закраске.
Канва (класс TCanvas) для рисования включает в себя шрифт (свойство Font), перо (свойство TPen), кисть (свойство TBrush) и дискриптор (свойство Handle). На поверхности канвы можно рисовать любым из следующих способов:
1. Рисовать сложные графические изображения по отдельным точкам с помощью свойства Pixels [X, Y: Integer]: TColor.
Пример нанесения красной точки в позиции (5, 5):
Pixelsх[5,5]:= RGB(255, 0, 0).
2. Помещать готовые графические изображения, задаваемые полем Graphic.
3. Проводить линии и изображать простые геометрические фигуры текущим пером. Если геометрическая фигура замкнутая, то после её рисования её внутренность закрашивается текущей кистью.
Для «сбрасывания» текущих установок шрифта, пера и кисти (установки их значений по умолчанию) используется метод Refresh.
При изменении канвы (то есть при любом рисовании) возбуждаются события OnChange и OnChanging (соответственно до начала изменений и по их завершению).
Рассмотрим некоторые часто используемые методы для рисования и вывода текстов на поверхность канвы:
BrushCopy (const Dest: TRect; BitMap: TBitMap; const Sourse: TRect; Color: TColor); - копирование прямоугольника Sourse из битового изображения BitMap в прямоугольник Dest канвы с изменением цвета Color на цвет кисти Brush.Color. Для рисования «прозрачной» картины цвет кисти фона заменяется на цвет битового изображения, являющийся в нём фоновым или наиболее частым.
CopyRect (const Dest: TRect; Canvas: TCanvas; const Sourse: TRect); - копирование прямоугольника Sourse из канвы в прямоугольник Dest в области самого объекта.
Drow (X, Y: Integer; Graphic: TGraphic); - отрисовка графического объекта Graphic с заданными координатами его левого верхнего угла.
Polygon (const Points: array of TPoint); - отрисовка многоугольника с вершинами в указанных точках.
StretchDraw (const Rect: TRect; Graphic: TGraphic); - отрисовка в прямоугольнике Rect объекта Graphic с его масштабированием к размеру прямоугольника Rect.
TextOut (X, Y: Integer; const Text: String); - вывод текста Text с заданными координатами его верхнего левого угла (X,Y).
31.3. Проектирование интерфейса с пользователем: компоненты стандартных диалогов
Для создания стандартных диалоговых окон в приложениях Windows применяется ряд стандартных программных компонентов. В Delphi эти компоненты находятся на странице Dialogs и располагаются в библиотеке COMMDLG.dll
Выделяют 10 основных видов диалогов:
OpenDialog – выбор имени файла, предназначенного для чтения.
SaveDialog – выбор имени файла, предназначенного для записи.
OpenPictureDialog – выбор имени файла, для чтения графического файла.
SavePictureDialog – выбор имени файла, для записи графического файла.
FontDialog – выбор одного из установленных в системе шрифтов.
ColorDialog – выбор одного из допустимых в системе цветов.
PrintDialog – выбор принтера для печати документа.
PrintSetupDialog – настройка параметров вывода на принтер.
FindDialog – подготовка к поиску нужного фрагмента текста.
ReplaceDialog – замена найденного текста другими.
Последовательность использования всех указанных диалогов одинакова и состоит из трех этапов:
1.Настройка параметров диалога в свойстве Options (иногда и в других свойствах).
2. Вызов функции Execute для выдачи диалогового окна. Функция возвращает значение True или False в зависимости от того, подтвердил ли пользователь выбранную настройку или нет.
|
|
3. Чтение и использование заказанных значений в их свойстве (при положительном ответе).