340______________________________________________Глава 5

Кисть участвует в заполнении фигур не только с помощью этой функции. Все
перечисленные ранее методы рисования замкнутых фигур тоже заполняют их с по-
мощью кисти. Это относится к методам Chord, Ellipse, Pie, Polygon и др.

Имеется еще один интересный метод, работающий с кистью. Это метод Flood-
Fill, который заполняет замкнутую область на канве. Этот метод определен следу-
ющим образом:

void _fastcall FloodFiil(int X, int Y, TColor Color,
TFillStyle FillStyle);

Точка с координатами X и Y является произвольной внутренней точкой запол-
няемой области, которая может иметь произвольную форму. Граница этой области
определяется сочетанием параметров Color и FillStyle. Параметр Color указывает
цвет, который используется при определении границы заполняемой области, а па-
раметр FillStyle определяет, как именно по этому цвету определяется граница. Па-
раметр FillStyle может принимать одно из двух следующих значений: fsSurface
или fsBorder. Если FillStyle = fsSurface, то заполняется область, окрашенная
цветом Color, а на других цветах метод останавливается. Если FillStyle = fsBor-
der, то наоборот, заполняется область окрашенная любыми цветами, не равными
Color, а на цвете Color метод останавливается.

Для определения области закрашивания можно использовать координаты и
цвет одного из пикселей, расположенных внутри области (если FillStyle = fsSurfa-
ce) или снаружи ее (если FillStyle = fsBorder). В следующем разделе 5.1.4 будет
приведен пример использования метода FloodFiil.

Имеется еще один метод канвы, связанный с кистью. Это метод FrameRect.
Он рисует на канве текущей кистью прямоугольную рамку, не закрашивая ее.
Синтаксис метода FrameRect:

void   fastcall FrameRect(const Windows::TRect SRect);

Параметр Rect определяет позицию и размеры прямоугольной рамки. Толщи-
на рамки — 1 пиксель. Область внутри рамки кистью не заполняется. Метод Fra-
meRect отличается от рассмотренного ранее метода Rectangle тем, что рамка рису-
ется цветом кисти (в методе Rectangle — цветом пера) и область не закрашивается
(в методе Rectangle закрашивается).

5.1.4 Пример построения собственного простого
графического редактора

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

1. Начните новое приложение.

2. Перенесите на форму два компонента типа TImage и расположите их в ниж-
ней левой части формы (рис. 5.11), придав квадратную форму, например, раз-
мером 20 на 20. Это будут окна основного и вспомогательного цветов. Имена
этих компонентов будут Imagel и Image2.

3. Перенесите на форму еще один компонент типа TImage и расположите его в
верхней части формы, несколько отступив от левого края, где у нас будет ин-
струментальная панель, и растянув так, чтобы он занимал основную часть
формы. Это будет холст для рисования. Имя этого компонента будет Image3.

4. Перенесите на форму еще один компонент типа TImage и расположите его
внизу правее первых двух на одном с ними уровне. Это будет палитра цветов.
Ее высоту задайте той же, что у первых двух компонентов, а длину — в 10 раз
большую. Имя этого компонента будет Image4.