Delphi – это среда разработки программ, ориентированных на работу в операционных системах семейства Windows. Программы в Delphi создаются на основе современной технологии визуального проектирования которая, в свою очередь, базируется на идеях объектно-ориентированного программирования. Программы в Delphi пишутся на языке Object Pascal, который является преемником и развитием языка Turbo Pascal. Как следует из его названия, этот язык также воплотил концепцию объектно-ориентированного программирования. С помощью Delphi можно создавать различные типы программ – и консольные приложения, и оконные приложения, и приложения для работы с базами данных и Internet. В консольных приложениях для ввода и вывода данных используются процедуры Read, Readln,Write, Writeln. Для выполнения консольного приложения эмулируется режим операционной системы MS DOS. Оконные приложения – основной вид приложений, используемых в операционных системах семейства Windows. Оконными приложениями является подавляющее большинство прикладных программ, созданных для работы в Windows, например, такие программы , как Проводник, текстовый процессорWord, табличный процессор Excel, графические редакторы и многие другие. Delphi использует для создания оконных приложений специальные компоненты. С их помощью производится ввод и отображение текстовой информации, создание графического интерфейса пользователя и т.п.

Графические возможности Delphi

Delphi позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации.

Программа выводит графику на поверхность объекта (формы или компонента Image). Поверхности объекта соответствует свойство canvas. Для того чтобы вывести на поверхность объекта графический элемент (прямую линию, окружность, прямоугольник и т. д.), необходимо применить к свойству canvas этого объекта соответствующий метод. Например, инструкция Form1.Canvas.Rectangle (10,10,100,100) вычерчивает в окне программы прямоугольник.

Холст

Как было сказано ранее, поверхности, на которую программа может выводить графику, соответствует свойство Canvas. В свою очередь, свойство canvas — это объект типа TCanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т. д.), а свойства позволяют задать характеристики выводимых графических примитивов: цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации.

Методы вывода графических примитивов рассматривают свойство Canvas как некоторый абстрактный холст, на котором они могут рисовать (canvas переводится как «поверхность», «холст для рисования»). Холст состоит из отдельных точек — пикселов. Положение пиксела характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста.

Размер холста можно получить, обратившись к свойствам Height и width области иллюстрации (image) или к свойствам формы: ClientHeight и Clientwidth.

Карандаш и кисть

Художник в своей работе использует карандаши и кисти. Методы, обеспечивающие вычерчивание на поверхности холста графических примитивов, тоже используют карандаш и кисть. Карандаш применяется для вычерчивания линий и контуров, а кисть — для закрашивания областей, ограниченных контурами.

Карандашу и кисти, используемым для вывода графики на холсте, соответствуют свойства Реn (карандаш) и Brush (кисть), которые представляют собой объекты типа треп и TBrush, соответственно. Значения свойств этих объектов определяют вид выводимых графических элементов.

Карандаш

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

Свойство Color задает цвет линии, вычерчиваемой карандашом. Свойство width задает толщину линии (в пикселах). Например, инструкция Canvas. Pen. width: =2 устанавливает толщину линии в 2 пиксела.

Свойство style определяет вид (стиль) линии, которая может быть непрерывной или прерывистой, состоящей из штрихов различной длины. Толщина пунктирной линии не может быть больше 1. Если значение свойства Pen.width больше единицы, то пунктирная линия будет выведена как сплошная.

Свойство Mode определяет, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия прочерчивается. По умолчанию вся линия вычерчивается цветом, определяемым значением свойства Pen.Color.

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

Кисть

Кисть (canvas.Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами: Color, Style

Область внутри контура может быть закрашена или заштрихована. В первом случае область полностью перекрывает фон, а во втором — сквозь незаштрихованные участки области будет виден фон.

В качестве значения свойства Color можно использовать любую из констант типа TColor

В качестве примера в листинге 10.1 приведена программа Стили заполнения областей, которая в окно выводит восемь прямоугольников, закрашенных черным цветом с использованием разных стилей.

Листинг 10.1. Стили заполнения областей

unit brustyle_; interface

uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, ExtCtrls;

type

TForm1 = class(TForm)

procedure FormPaint(Sender: TObject);

private

{ Private declarations}

public

{ Public declarations )

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

перерисовка формы procedure TForm1.FormPaint(Sender: TObject); const bsName: array[1..8] of string = („bsSolid“,'bsClear“,'bsHorizontal“, „bsVertical“,'bsFDiagonal“,'bsBDiagonal“, „bsCross“,'bsDiagCross“); var x,y: integer; координаты левого верхнего угла прямоугольника

w,h: integer; ширина и высота прямоугольника bs: TBrushStyle; стиль заполнения области

k: integer; номер стиля заполнения i,j: integer; begin w:=40; h:=40; размер области(прямоугольника)

у:=20;

for i:=l to 2 do

begin

х:=10;

for j:=1 to 4 do

begin

k:=j+(i-1)*4; номер стиля заполнения case k of 1: bs = bsSolid; 2: bs = bsClear; 3: bs = bsHorizontal; 4: bs = bsVertical; 5: bs = bsFDiagonal; 6: bs = bsBDiagonal; 7: bs = bsCross; 8: bs = bsDiagCross; end; вывод прямоугольника

Canvas.Brush.Color := clGreen;

цвет закрашивания — зеленый Canvas.Brush.Style := bs; стиль закрашивания

Canvas . Rectangle (x, y, x+w, y-t-h) ;

вывод названия стиля Canvas.Brush.Style := bsClear; Canvas.TextOut(x, y-15, bsName[k]); вывод названия стиля

x := x+w+30;

end;

у := y+h+30;

end;

end;

end.

Вывод текста

Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:

Объект.Canvas.TextOut(x, у, Текст)

где:

  объект — имя объекта, на поверхность которого выводится текст;
  х, у — координаты точки графической поверхности, от которой выполняется вывод текста;
  Текст — переменная или константа символьного типа, значение которой определяет выводимый методом текст.

Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта canvas. Свойство Font представляет собой объект типа TFont. Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial

Размер шрифта в пунктах (points). Пункт— это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма

Стиль начертания символов. Может быть: нормальным, полужирным, курсивным, подчеркнутым, перечеркнутым. Стиль задается при помощи следующих констант: fsBold (полужирный), fsltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый).

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

Объект. Canvas . Font : = [fsBold, fs Italic]

Цвет символов. В качестве значения можно использовать константу типа Tcolor

Внимание!

Область вывода текста закрашивается текущим цветом кисти. Поэтому перед выводом текста свойству Brush.Color нужно присвоить значение bsClear или задать цвет кисти, совпадающий с цветом поверхности, на которую выводится текст.

Следующий фрагмент программы демонстрирует использование функции Textout для вывода текста на поверхность формы:

with Form1.Canvas do begin

установить характеристики шрифта Font.Name := „Tahoma“; Font.Size := 20; Font.Style := [fsltalic, fsBold] ; Brush.Style := bsClear; область вывода текста не закраши-

TextOut(0, 10, „Borland Delphi 7“);

end;

После вывода текста методом Textout указатель вывода (карандаш) перемещается в правый верхний угол области вывода текста.

Иногда требуется вывести какой-либо текст после сообщения, длина которого во время разработки программы неизвестна. Например, это может быть слово «руб.» после значения числа, записанного прописью. В этом случае необходимо знать координаты правой границы уже выведенного текста. Координаты правой границы текста, выведенного методом Textout, можно получить, обратившись к свойству PenPos.

Следующий фрагмент программы демонстрирует возможность вывода строки текста при помощи двух инструкций Textout.

with Form1.Canvas do begin

TextOut(0, 10, „Borland ') ;

TextOut(PenPos.X, PenPos.Y, „Delphi 7“);

end;

Краткая аннотация полезных ресурсов:

http://www.delphiexpert.ru/lessons.php?page=3 Хороший ресурс с массой интересных уроков разной сложности, с большим количеством полезных ссылок: книги, исходники, программы, компоненты, графика и звук. Для просмотра уроков не требуется регистрация(но некоторые уроки видны только подписчикам).

http://www.delphi-manual.ru/ Хорошая подборка лабораторных работ для начинающих, единственное, что не понравилось – оформление меню(кислотно-зеленый цвет не годится для меню, глаза устают).

http://www.delphicomponent.ru/delphi_lessons/ Неплохой сайт, посвященный Delphi. Присутствуют уроки, учебники, компоненты, исходники, а так же видео-уроки. Каждый урок описан пошагово и понятно.

http://mydelphiprogramms.jimdo.com/%D1%83%D1%80%D0%BE%D0%BA%D0%B8/%D1%83%D1%80%D0%BE%D0%BA%D0%B8-delphi/ Хороший ресурс, посвященный урокам по Delphi. Уроки доступно описаны, все понятно и просто, но самих уроков не так много, кроме уроков по Delphi, так же присутствуют статьи и уроки по C++ .

 

Назад: delphi