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). Причина в том, что метод с