774 Часть V. Инструментарий программиста

ЗОАИВКИ. С помощью заливок можно закрасить требуемую часть экрана определенным цветом. Поскольку Windows может определять границы достаточно сложных областей, единственным ограничением при заливке является то, что закрашиваемая фигура может оказаться нарисованной с помощью OWL. Рассмотрим следующий фрагмент кода. Здесь с помощью метода Ellipse;) изображается простая окружность, разбитая пополам.

// Отрисовка окружности TRect rect(10, 10, 210, 210);

dc.Ellipse(rect) ;

// Отрисовка секущей линии • • . dc.MoveTo(110, 10);

dc.LineTo(110, 210);

Можно воспользоваться методом контекста устройства ExtFloodFillо для заливки одной из половин окружности текущим цветом фона. Метод ExtFloodFill () принимает три аргумента: точку внутри закрашиваемой области, цвет границы области и аргумент, описывающий тип заливки. Этот аргумент может принимать значения FLOODFILLBORDER или FLOODFILLSURFACE. Значение FLOODFILLBORDER указывает, что область для заливки определяется границей, цвет которой задан в качестве второго аргумента. Следовательно, следующий вызов начинает закраску с указанной точки, пока не встретит красную линию, которая определяет границу.

dc.ExtFloodFill(pnt, TColor::LtRed, FLOODFILLBORDER);

Если же будет указано значение FLOODFILLSURFACE, заливка определяется областью, лежащей под заданной точкой и имеющей заданный цвет. Рассмотрим Следующий ВЫЗОВ ExtFloodFill ().

dc.ExtFloodFill(pnt, TColor::LtRed, FLOODFILLSURFACE);

Если pnt — точка внутри окружности, и цвет фона уже установлен красным, этот вызов закрасит окружность цветом фона.

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

// Заливка правой половины окружности TPoint(160, 160);

dc.ExtFloodFill(pnt, TColor::Black, FLOODFILLSURFACE);

Рис. 25.8 показывает, как выглядит закрашенная окружность.

Замечание

(Возможно, вас удивит, почему разработчики Borland назвали метод ExtFloodFill (), а не просто FloodFillf). Причина в том, что метод с