Как сделать ластик в делфи

Добавил пользователь Morpheus
Обновлено: 04.10.2024

Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к канве - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста.

В работе с графикой в Delphi в распоряжении программиста находятся канва (холст, полотно - свойство Canvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство канвы Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы.

Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты! Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер.

Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора

приведёт к рисованию красной точки с координатами [100, 100]. Узнать цвет пиксела можно обратным присвоением:

Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR. Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF.
Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

Следующая таблица содержит некоторые свойства и методы канвы:

Процедура TextOut(X, Y: Integer; const Text: WideString);
Производит вывод строки Text начиная с (X, Y) - левого верхнего пиксела текста.
Свойство TextWidth(var Text: String): Integer;
Содержит длину строки Text в пикселах.
Свойство TextHeight(var Text: String): Integer;
Содержит высоту строки Text в пикселах.
Процедура MoveTo(X, Y: Integer);
Производит перемещение позиции к пикселу с адресом (X, Y).
Процедура LineTo(X, Y: Integer);
Производит рисование прямой линии из точки текущей позиции к пикселу с адресом (X, Y). Адрес (X, Y) становится точкой текущей позиции.
Процедура FillRect(const Rect: TRect);
Заполняет прямоугольник Rect на холсте, используя текущую кисть. Может использоваться, в том числе, для стирания части изображения на холсте.

Напишем, используя только эти методы канвы, приложение для изображения на канве компонента Image текста, который вводится в компонент Memo:

Первое, что мы сделаем, это инициализацию переменных при старте программы. Необходимо определить размеры области рисования (создадим для этого глобальную переменную Rect типа TRect) и сделать цвет фона Image белым:

procedure TForm1.FormCreate(Sender: TObject);
begin
Rect.Left:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
end;

Затем нарисуем рамку по сторонам Image:

procedure TForm1.page;
begin
with Image1.Canvas do
begin
MoveTo(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
LineTo(0, 0);
end;
end;

Попробуем, что получилось. Всё работает, но рамка пока не выводится. Поэтому добавим процедуру page в в процедуру FormCreate. Теперь красиво. Далее напишем простую процедуру стирания, очищения Image. Её нужно будет вызывать перед любым обновлением изображения, иначе предыдущее и последующее изображения будут перекрываться.

procedure TForm1.clearing;
begin
Image1.Canvas.FillRect(Rect); //Прямоугольник Rect заполняется белым цветом, изображение стирается.
end;

Теперь пришла очередь непосредственно процедуры вывода текста. Начнём выводить текст от точки (3, 3) - верхнего левого угла листа, с небольшим отступом в 3 пиксела. Каждую последующую строку будем смещать на высоту строки:

procedure TForm1.prn;
var i: Integer;
begin
with Image1.Canvas do
for i:=1 to Memo1.Lines.Count do
TextOut(3, 3+(i-1)*TextHeight('A'), Memo1.Lines[i-1]);
end;

Теперь всё готово для вывода текста. Делать это будем по событию OnChange:

procedure TForm1.Memo1Change(Sender: TObject);
begin
clearing;
prn;
page;
end;

Ну и напоследок процедура изменения размера шрифта:

procedure TForm1.Edit1Change(Sender: TObject);
begin
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Sender);
end;

Можно модифицировать эту программу для вывода текста на печать. Для работы с принтером нужно подключить модуль Printers:

unit Unit1;

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Printers;

При работе с принтером как с полотном для начала печати вызывается метод BeginDoc, затем производится вывод документа, завершается печать вызовом метода EndDoc:

Объектно –
ориентированное
программирование на
DELPHI - 13
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год

DELPHI - 13
На этом уроке:
Мы познакомимся с компонентами
для работы с графикой и создадим свой
графический редактор
Вопросы:
1. Введение в графику
2. Создаем свой графический
редактор

Введение в графику
Для работы с графикой в Delphi есть много средств. Рассмотрим некоторые из
них.
У многих объектов Delphi есть свойство Canvas, что в переводе означает
холст. Если у объекта имеется такое свойство, то это значит, что на нем
можно рисовать. (Заметим, что работая в любой программе, да и в самой
операционной системе Windows, мы видим только графику – все кнопочки,
окна, инструменты … это всего лишь нарисованные, например на форме
объекты (вернее их картинки) и при нажатии на кнопку она перерисовывается,
показываясь нажатой)
Для рисования в Delphi есть два основных инструмента:
• Pen (карандаш) – для рисования линий
• Brush (кисть) – для раскраски объектов
У каждого из этих инструментов есть дополнительные свойства ( например
цвет карандаша, толщина линии, тип линии )

Введение в графику
Рассмотрим рисование линий, прямоугольников, эллипсов:
1. Линия
Сначала откроем событие для формы – OnPaint и запишем там код:
Устанавливаем
цвет карандаша красный
Устанавливаем
толщину
карандаша в 5
пикселей
Проводим линию
до точки с
координатами
200,20
Устанавливаем
карандаш в точку
с координатами
10,20

Введение в графику
Рассмотрим рисование линий, прямоугольников, эллипсов:
1. Линия
Проводим
зеленую линию
Проводим
синюю линию
В результате мы получаем на форме
следующую картинку:

Введение в графику
Рассмотрим рисование линий, прямоугольников, эллипсов:
2. Прямоугольник, эллипс
Выбираем
произвольный
цвет и рисуем
прямоугольник
Выбираем
произвольный
цвет и рисуем
эллипс
В результате мы
получаем на
форме
следующую
картинку:
Посмотреть ->

Создаем свой графический редактор
А сейчас, используя средства Delphi, попробуем создать
графический редактор наподобие Paint (конечно менее
функциональный), однако умеющий следующее:
• Рисовать линии, прямоугольники, эллипсы и
просто карандашом
• Делать заливку фигур цветом
• Использовать ластик
• Выбирать толщину и цвет линий
• Открывать графические файлы и сохранять
нарисованное
Рассмотрим создание редактора по шагам:

Создаем свой графический редактор
ШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Компонент
MainMenu
Сформируем следующее меню программы:

Создаем свой графический редактор
ШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Компонент
OpenPictureDialog
для открытия
изображений
Компонент
ColorDialog для
выбора цвета
рисования
Компонент
SavePictureDialog
для сохранения
рисунков
Манифест XP для
стильности

Создаем свой графический редактор
ШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Компонент ToolBar
(инструментальная
панель для
размещения кнопок)
7 кнопок
(SpeedButton) для
выбора инструмента
рисования. Нанесем
на кнопки картинки
SpinEdit для выбора
толщины линии
В свойствах установим
min толщину линии
– 1 (пикс), а max 20
Сделаем так, чтобы из всех кнопок нажатой могла быть только одна (при
нажатии любой кнопки остальные становились отжатыми). Для этого
выделяем все кнопки. Установим свойство выделенных элементов
AllowAllUp в значение True.Свойство GroupIndex поставим равным 1.
Свойство Down для всех кнопок должно быть равно False, только для
отжатой кнопки инструмента карандаш свойство Down должно быть
равно True.

Создаем свой графический редактор
ШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Размещаем на форме компонент ScrollBox, на
который ложим компонент Image
(ScrollBox – это подложка для Image. Зададим
ему белый цвет и растянем его на все
свободное место)
У элемента Image свойство Align сделаем в
AlClient, чтобы он вписался полностью в
ScrollBox, а свойство Stretch –в True

Создаем свой графический редактор
ШАГ 2
Займемся описанием событий:
Сначала давайте подумаем, какие события возникают, когда мы рисуем. Ясно,
что почти все мы делаем мышкой. Например для рисования линии мы ставим
курсор в какое-то место, нажимаем левую кнопку мыши, перемещаем мышь до
нужного места и отпускаем ее.
Таким образом в процессе рисования мы используем 3 основных события:
1. OnMouseDown (нажатие кнопки мыши)
2. On MouseMove (перемещение мыши)
3. OnMouseUp (отпускание кнопки мыши)
Рисование карандашом
При нажатии на кнопку (OnMouseDown) карандаш должен встать на точку с
координатами курсора , при перемещении мыши с нажатой клавишей (On
MouseMove ) должна рисоваться линия, при отпускании кнопки мыши
(OnMouseUp) должно прекратиться рисование.
Поэтому для рисования карандашом необходим код в каждом из событий для
мыши OnMouseDown, On MouseMove, OnMouseUp.

Создаем свой графический редактор
ШАГ 2
Рассмотрим код рисования карандашом:
(Нажатие кнопки мыши - MouseDown)
Введем переменную
логического типа r – это
своеобразное
разрешение/запрет на
рисование. Если r – true,
то рисовать можно,
иначе нельзя.
Зачем это?
При нажатии кнопки
мыши даем добро на
рисование
Если нажата кнопка
рисования карандашом,
то на Image переходим к
точке с координатами
курсора
Мы можем перемещать
мышь (MouseMove) с
нажатой или
отпущенной клавишей: в
первом случае должно
рисоваться (r=true), а во
втором не должно
(r=false)

Создаем свой графический редактор
ШАГ 2
Рассмотрим код рисования карандашом:
(Перемещение мыши - MouseMove)
Проверяем,
разрешено ли
рисовать
Если рисовать можно и нажата кнопка
рисования карандашом, то
устанавливаем цвет карандаша,
соответствующий выбранному в
ColorDialoge и проводим линию

Создаем свой графический редактор
ШАГ 2
Рассмотрим код рисования карандашом:
(Отпускание мыши - MouseUp)
Проводим линию до
координаты отпускания мыши
и устанавливаем запрет на
рисование

Создаем свой графический редактор
ШАГ 3
Стирание с помощью ластика
Что мы делаем при стирании ластиком? На самом-то деле мы ничего не
стираем, а рисуем точно так же, как и карандашом, только белым цветом.
Получается эффект стирания.
Это значит, что при нажатии кнопки ластика ему присваивается цвет
белый, толщина линии берется из значения SpinEdita, а код рисования
точно такой же.
ШАГ 4
Рисование прямоугольника, эллипса, заливка фигур
Не будем вдаваться в подробности рисования
прямоугольника, эллипса и заливки фигур – здесь
используются соответствующие методы Canvas: Rectangle,
Ellipse, FloodFill – посмотрите внимательно код,
соответствующий этим операциям в примере, приложенном к
презентации

Создаем свой графический редактор
ШАГ 5
Выбор цвета
При нажатию на кнопку цвета запускается ColorDialog, где мы выбираем
нужный цвет и присваиваем его карандашу и кисти
(см. предыдущие уроки о диалогах)

Создаем свой графический редактор
ШАГ 6
Очистка холста
Конечно, можно очистить рисунок с помощью ластика, но это долго,
поэтому при выборе меню Правка -> Очистить происходит очистка всего
холста.
И это опять обман, как и в случае с ластиком. На самом деле мы ничего
не очищаем, а рисуем белый прямоугольник размерами чуть больше
размера поля рисования – создается эффект очистки
Устанавливаем толщину линии = 1, цвет линии =
белый и рисуем прямоугольник с размерами на 5
пикселей больше размеров поля для рисования
(Image)

Создаем свой графический редактор
ШАГ 7
Меню Файл -> Создать
Цвет кисти делаем белым, рисуем прямоугольник чуть больше Image, меняем
заголовок формы и устанавливаем начальный цвет карандаша - черный
ШАГ 8
Меню Файл -> Открыть
Диалоги рассмотрены нами ранее довольно подробно, поэтому комментарии излишни

Создаем свой графический редактор
На этом и остановимся. Давайте запустим наш редактор и порисуем.
Порисовать ->
Итак, мы создали свой графический редактор, где использовали графические
возможности Delphi, и не только графические – нам пригодились знания из
всех прошлых уроков Конечно это очень простой редактор с элементарными
функциями. Однако его разработка позволила нам понять суть работы с
графикой в Delphi. Ну а дальше можно наращивать его возможности,
добавлять новые функции – для этого надо читать литературу по Delphi,
разбираться и пробовать.
Мы же на этом закончим наш урок

ИТОГИ УРОКА:
На этом уроке мы научились работать с графикой в Delphi и
создали свой графический редактор
На этом цикл презентаций о
программировании в среде Delphi
закончен

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

Графические компоненты

В стандартную библиотеку визуальных компонент Delphi входит несколько объектов, с помощью которых можно придать своей программе совершенно оригинальный вид. Это - TImage (TDBImage), TShape, TBevel.

TImage позволяет поместить графическое изображение в любое место на форме. Этот объект очень прост в использовании - выберите его на странице Additional и поместите в нужное место формы. Собственно картинку можно загрузить во время дизайна в редакторе свойства Picture (Инспектор Объектов). Картинка должна храниться в файле в формате BMP ( bitmap ), WMF (Windows Meta File ) или ICO ( icon ). (TDBImage отображает картинку, хранящуюся в таблице в поле типа BLOB. При этом доступен только формат BMP.)

Как известно, форматов хранения изображений гораздо больше трех вышеназванных (например, наиболее известны PCX, GIF, TIFF, JPEG). Для включения в программу изображений в этих форматах нужно либо перевести их в формат BMP, либо найти библиотеки третьих фирм, в которых есть аналог TImage, “понимающий” данные форматы (есть как VBX объекты, так и “родные” объекты для Delphi).

При проектировании следует помнить, что изображение, помещенное на форму во время дизайна, включается в файл .DPR и затем прикомпилируется к EXE файлу. Поэтому такой EXE файл может получиться достаточно большой. Как альтернативу можно рассмотреть загрузку картинки во время выполнения программы, для этого у свойства Picture (которое является объектом со своим набором свойств и методов) есть специальный метод LoadFromFile. Это делается, например, так:

if OpenDialog1.Execute then

Важными являются свойства объекта Center и Stretch - оба имеют булевский тип. Если Center установлено в True, то центр изображения будет совмещаться с центром объекта TImage. Если Stretch установлено в True, то изображение будет сжиматься или растягиваться таким образом, чтобы заполнить весь объект TImage.

TShape - простейшие графические объекты на форме типа круг, квадрат и т.п. Вид объекта указывается в свойстве Shape. Свойство Pen определяет цвет и вид границы объекта. Brush задает цвет и вид заполнения объекта. Эти свойства можно менять как во время дизайна, так и во время выполнения программы.

TBevel - объект для украшения программы, может принимать вид рамки или линии. Объект предоставляет меньше возможностей по сравнению с TPanel, но не занимает ресурсов. Внешний вид указывается с помощью свойств Shape и Style.

Свойство объектов Canvas

У ряда объектов из библиотеки визуальных компонент есть свойство Canvas (канва), которое предоставляет простой путь для рисования на них. Эти объекты - TBitmap, TComboBox, TDBComboBox, TDBGrid, TDBListBox, TDirectoryListBox, TDrawGrid, TFileListBox, TForm , TImage, TListBox, TOutline, TPaintBox, TPrinter, TSt ringGrid. Canvas является в свою очередь объектом, объединяющим в себе поле для рисования, карандаш (Pen), кисть (Brush) и шрифт (Font). Canvas обладает также рядом графических методов : Draw, TextOut, Arc, Rectangle и др. Используя Canvas, Вы можете воспроизводить на форме любые графические объекты - картинки, многоугольники, текст и т.п. без использования компонент TImage,TShape и TLabel (т.е. без использования дополнительных ресурсов), однако при этом Вы должны обрабатывать событие OnPaint того объекта, на канве которого Вы рисуете. Рассмотрим подробнее свойства и методы объекта Canvas.

Brush - кисть, является объектом со своим набором свойств:

Bitmap - картинка размером строго 8x8, используется для заполнения (заливки) области на экране.

Color - цвет заливки.

Style - предопределенный стиль заливки; это свойство конкурирует со свойством Bitmap - какое свойство Вы определили последним, то и будет определять вид заливки.

Handle - данное свойство дает возможность использовать кисть в прямых вызовах процедур Windows API .

ClipRect - (только чтение) прямоугольник, на котором происходит графический вывод.

CopyMode - свойство определяет, каким образом будет происходить копирование (метод CopyRect) на данную канву изображения из другого места: один к одному, с инверсией изображения и др.

Font - шрифт, которым выводится текст (метод TextOut).

Handle - данное свойство используется для прямых вызовов Windows API.

Pen - карандаш, определяет вид линий; как и кисть (Brush) является объектом с набором свойств:

Color - цвет линии

Handle - для прямых вызовов Windows API

Mode - режим вывода: простая линия, с инвертированием, с

выполнением исключающего или и др.

Style - стиль вывода: линия, пунктир и др.

Width - ширина линии в точках

PenPos - текущая позиция карандаша, карандаш рекомендуется перемещать с помощью метода MoveTo, а не прямой установкой данного свойства.

Pixels - двухмерный массив элементов изображения (pixel), с его помощью Вы получаете доступ к каждой отдельной точке изображения (см. пример к данному уроку).

Методы для рисования простейшей графики - Arc , Chord, LineTo, Pie, Polygon, PolyLine, Rectangle, RoundRect . При прорисовке линий в этих методах используются карандаш (Pen) канвы, а для заполнения внутренних областей - кисть (Brush).

Методы для вывода картинок на канву - Draw и StretchDraw , В качестве параметров указываются прямоугольник и графический объект для вывода (это может быть TBitmap, TIcon или TMetafile). StretchDraw отличается тем, что растягивает или сжимает картинку так, чтобы она заполнила весь указанный прямоугольник (см. пример к данному уроку).

Методы для вывода текста - TextOut и TextRect. При выводе текста используется шрифт (Font) канвы. При использовании TextRect текст выводится только внутри указанного прямоугольника. Длину и высоту текста можно узнать с помощью функций TextWidth и TextHeight.

Объект TPaintBox

На странице System Палитры Компонент есть объект TPaintBox, который можно использовать для построения приложений типа графического редактора или, например, в качестве места построения графиков (если, конечно, у Вас нет для этого специальных компонент третьих фирм). Никаких ключевых свойств, кроме Canvas, TPaintBox не имеет, собственно, этот объект является просто канвой для рисования. Важно, что координаты указателя мыши, передаваемые в обработчики соответствующих событий (OnMouseMove и др.), являются относительными, т.е. это смещение мыши относительно левого верхнего угла объекта TPaintBox, а не относительно левого верхнего угла формы.

Примеры

В первом примере (проект SHAPE.DPR, рис.1) показано, как во время выполнения программы можно изменять свойства объекта TShape. Изменение цвета объекта (событие OnChange для ColorGrid1): procedure TForm1.ColorGrid1Change(Sender: TObject);
begin
Shape1.Brush.Color:=ColorGrid1.ForeGroundColor;
end;

Во втором примере (проект PIXELS.DPR, рис.2) показано, как осуществить доступ к отдельной точке на изображении (на канве). По нажатию кнопки “Fill” всем точкам изображения присваивается свой цвет:

procedure TForm1.Button1Click(Sender: TObject);
var
i, j : Longint;
begin
Button1.Enabled:=False;
with Canvas do
for i:=1 to Width do begin
Application.ProcessMessages;
for j:=1 to Height do
Pixels[i,j]:=i*j;
end;
Button1.Enabled:=True;
end;

В третьей программе (проект DRAW.DPR, рис.3) приведен пример использования методов, выводящих изображение - Draw и StretchDraw:

Прорисовка изображений происходит в обработчике события OnPaint для формы:

procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do begin
Draw(0,0, Image1.Picture.BitMap);
StretchDraw(Rect(250,0,350,50),Image1.Picture.BitMap)
end;
end;

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

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

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

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

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

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



Рис. 10.1. Координаты точек холста

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

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

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

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

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

Читайте также: