Графические возможности Delphi Delphi позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации. Программа выводит графику на поверхность объекта (формы или компонента Image). Поверхности объекта соответствует свойство Canvas. Для того чтобы вывести на поверхность объекта графический элемент (прямую линию, окружность, прямоугольник и т. д.), необходимо применить к свойству canvas этого объекта соответствующий метод. Например, для вычерчивания в окне программы прямоугольника, задается команда: Form1.Canvas.Rectangle (10,10,100,100) Объект Свойство Метод
Свойство Canvas это объект типа TCanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т. д.), Свойства задают характеристики выводимых графических примитивов: цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации. (0,0) Х У Холст состоит из отдельных точек пикселов. Положение пиксела характеризуется его координатами (X,Y). Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста. Размер холста можно получить, обратившись к свойствам Height и width области иллюстрации (Image) или к свойствам формы: ClientHeight и ClientWidth.
Карандаш и кисть Художник в своей работе использует карандаши и кисти. Методы, обеспечивающие вычерчивание на поверхности холста графических примитивов, тоже используют карандаш и кисть. Карандаш применяется для вычерчивания линий и контуров, а кисть для закрашивания областей, ограниченных контурами. Карандашу и кисти, используемым для вывода графики на холсте, соответствуют свойства: Реn (карандаш) Brush (кисть) которые представляют собой объекты типа TPen и TBrush, соответственно. Значения свойств этих объектов определяют вид выводимых графических элементов.
Карандаш (Pen) Карандаш используется для вычерчивания точек, линий, контуров геометрических фигур: прямоугольников, окружностей, эллипсов, дуг и др. Вид линии, которую оставляет карандаш на поверхности холста, определяют свойства объекта Pen, которые перечислены в таблице. Свойства объекта карандаш (Pen) Свойство Определяет Color Цвет линии Width Толщину линии Style Вид линии Mode Режим отображения
Значение свойства Color определяет цвет линии Константа ЦветКонстанта Цвет clBlack ЧерныйclNavy Темно-синий clSilver СеребристыйclFuchsia Ярко-розовый clMaroon КаштановыйclPurple Розовый clRed КрасныйclAqua Бирюзовый clGreen ЗеленыйclTeal Зелено-голубой clLime СалатныйclWhite Белый clOlive ОливковыйclGray Серый clBlue Синий Свойство width задает толщину линии (в пикселах). Например, команда Form1.Canvas. Pen.Width: =2 устанавливает толщину линии в 2 пиксела.
Значение свойства Реn.Style определяет вид линии Константа Вид линии psSolid Сплошная линия psDash Пунктирная линия, длинные штрихи psDot Пунктирная линия, короткие штрихи psDashDot Пунктирная линия, чередование длинного и короткого штрихов psDashDotDot Пунктирная линия, чередование одного длинного и двух коротких штрихов psClear Линия не отображается (используется, если не надо изображать границу области, например, прямоугольника)
Значение свойства Реn.Mode влияет на цвет линии Константа Цвет линии pmBlack Черный, не зависит от значения свойства Pen. Color pmWhite Белый, не зависит от значения свойства Pen. Color pmCopy Цвет линии определяется значением свойства Pen.Color pmNotCopy Цвет линии является инверсным по отношению к значению свойства Pen. Color pmNot Цвет точки линии определяется как инверсный по отношению к цвету точки холста, в которую выводится точка линии Свойство Mode определяет, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия прочерчивается.
Кисть Кисть (Canvas.Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами: Свойство Определяет Color Цвет закрашивания замкнутой области Style Стиль (тип) заполнения области
Значения свойства Brush.Style определяют тип закрашивания Константа Тип заполнения (заливки) области bsSolid Сплошная заливка bsClear Область не закрашивается bsHorizontal Горизонтальная штриховка bsVertical Вертикальная штриховка bsFDiagonal Диагональная штриховка с наклоном линий вперед bsBDiagonal Диагональная штриховка с наклоном линий назад bsCross Горизонтально-вертикальная штриховка, в клетку bsDiagCross Диагональная штриховка, в клетку
Пример стилей заполнения областей
Методы вычерчивания графических примитивов Любая картинка, чертеж, схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, для того чтобы на экране появилась нужная картинка, программа должна обеспечить вычерчивание (вывод) графических примитивов, составляющих эту картинку. Вычерчивание графических примитивов на поверхности компонента (формы или области вывода иллюстрации) осуществляется применением соответствующих методов к свойству Canvas этого компонента.
Точка Поверхности, на которую программа может осуществлять вывод графики, соответствует объект Canvas. Свойство Pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвете каждой точки графической поверхности. Используя свойство Pixels, можно задать требуемый цвет для любой точки графической поверхности, т. е. "нарисовать" точку. Например, команда Form1.Canvas.Pixels[10,10]:=clRed; окрашивает точку поверхности формы в красный цвет. Размерность массива Pixels определяется размером графической поверхности. Свойство Pixels можно использовать для построения графиков.
Линия Вычерчивание прямой линии осуществляет метод Linе То, инструкция вызова которого в общем виде выглядит следующим образом: Объект.Canvas.LineTo(x,у); Объект имя объекта (компонента), на поверхности которого выполняется вычерчивание; Метод Linе То вычерчивает прямую линию от текущей позиции карандаша в точку с координатами, указанными при вызове метода. Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода MoveTo, указав в качестве параметров координаты нового положения карандаша. Вид линии (цвет, толщина и стиль) определяется значениями свойств объекта Pen графической поверхности, на которой вычерчивается линия.
Прямоугольник Прямоугольник вычерчивается методом Rectangle, команда вызова которого в общем виде выглядит следующим образом: Объект.Canvas.Rectangle(x1, y1,x2, y2); где: Объект имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1 и х 2, у 2 координаты левого верхнего и правого нижнего углов прямоугольника.
Прямоугольник со скругленными углами Метод RoundRec тоже вычерчивает прямоугольник, но со скругленными углами. Объект.Canvas.RoundRect(x1,y1,х 2, у 2, х 3, у 3); где: x1, y1, х 2, у 2 -- параметры, определяющие положение углов прямоугольника, в который вписывается прямоугольник со скругленными углами; х 3 и у 3 размер эллипса, одна четверть которого используется для вычерчивания скругленного угла.
Окружность и эллипс Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Команда вызова метода в общем виде выглядит следующим образом: Объект.Canvas.Ellipse(x1,y1, х 2,у 2); где: Объект имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1, х 2, у 2 координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность.
Дуга Вычерчивание дуги выполняет метод Arc: Объект.Canvas.Arc(x1,y1,х 2,у 2,х 3,у 3,х 4,у 4); где: x1, y1, х 2, у 2 параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х 3, у 3 параметры, определяющие начальную точку дуги; х 4, у 4 параметры, определяющие конечную точку дуги. Начальная (конечная) точка это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами (х 3,у 3) и (х 4, у 4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной
Сектор Метод Pie вычерчивает сектор эллипса или круга. Объект.Canvas.Pie(x1,y1,x2,y2,х 3,у 3,х 4,у 4); где: x1, y1, х 2, у 2 параметры, определяющие эллипс (окружность), частью которого является сектор; х 3, у 3, х 4, у 4 параметры, определяющие координаты конечных точек прямых, являющихся границами сектора. Начальные точки прямых совпадают с центром эллипса (окружности). Сектор вырезается против часовой стрелки от прямой, заданной точкой с координатами (х 3, у 3), к прямой, заданной точкой с координатами (х 4, у 4)
Вывод текста Для вывода текста на поверхность графического объекта используется метод TextOut. Команда вызова метода TextOut в общем виде выглядит следующим образом: Объект.Canvas.TextOut(x, у, Текст); где: объект имя объекта, на поверхность которого выводится текст; х, у координаты точки графической поверхности, от которой выполняется вывод текста; Текст переменная или константа символьного типа, значение которой определяет выводимый методом текст.
Свойства объекта TFont Шрифт определяется значением свойства Font объекта Canvas. Свойство Font представляет собой объект типа TFont. Свойство Определяет Name Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial Size Размер шрифта в пунктах (points). Пункт это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма Style Стиль начертания символов. Константы: fsBold (полужирный), fsltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый). Можно комбинировать необходимые стили. Например, Объект. Canvas. Font. Style : = [fsBold, fs Italic] Color Цвет символов. В качестве значения можно использовать константу типа Tcolor
Область вывода текста закрашивается текущим цветом кисти. Поэтому перед выводом текста свойству Brush.Color нужно присвоить значение bsClear или задать цвет кисти, совпадающий с цветом поверхности, на которую выводится текст.
Следующий фрагмент программы демонстрирует использование функции Textout для вывода текста на поверхность формы: begin // установить характеристики шрифта Form1.Canvas.Font.Name := 'Tahoma'; Form1.Canvas.Font.Size := 20; Form1.Canvas.Font.Style := [fsltalic, fsBold] ; Form1.Canvas.Brush.Style := bsClear; // область вывода текста не закрашивается Form1.Canvas.TextOut(0, 10, 'Borland Delphi 7'); end; После вывода текста методом Textout указатель вывода (карандаш) перемещается в правый верхний угол области вывода текста.
Компонент: ColorDialog Компонент ColorDialog вызывает диалоговое окно выбора цвета. Если вы хотите, чтобы пользователь мог задать цвет какого-то объекта, например, цвет фона компонента Memo1, то это можно реализовать оператором: Основное свойство компонента ColorDialog Color. Это свойство соответствует тому цвету, который выбрал в диалоге пользователь. Если при вызове диалога желательно установить некоторое начальное приближение цвета, это можно сделать, установив Color предварительно во время проектирования или программно. Свойство CustomColors типа TStrings позволяет задать заказные цвета дополнительной палитры. {данный код открывает диалог выбора цвета и меняет цвет компонента Мемо 1 на выбранный} if ColorDialog1. Execute then Memo1. Color := ColorDialog1.Color;