Примеры цветных границ для процедуры граничного заполнения

Рис. 4.26. Примеры цветных границ для процедуры граничного заполнения

Способы заполнения, которые применяются для четырехсвязной (панель а) и восьмисвязной области (панель б). Пустыми кружками обозначены пиксели, которые должны проверяться в текущем тестовом положении, показанном закрашенным кружком графического планшета или другого интерактивного устройства ввода художник или дизайнер может нарисовать контуры фигуры, выбрать цвет заполнения по цветовому меню, задать цвет границы области и указать точку внутри заданной области. После этого внутренняя область данной фигуры будет закрашена заданным цветом. Для определения области граничного заполнения могут служить как внешние, так и внутренние границы. Примеры описания цветных областей приведены на рис. 4.26.

Рис. 4.27. Способы заполнения, которые применяются для четырехсвязной (панель а) и восьмисвязной области (панель б). Пустыми кружками обозначены пиксели, которые должны проверяться в текущем тестовом положении, показанном закрашенным кружком графического планшета или другого интерактивного устройства ввода художник или дизайнер может нарисовать контуры фигуры, выбрать цвет заполнения по цветовому меню, задать цвет границы области и указать точку внутри заданной области. После этого внутренняя область данной фигуры будет закрашена заданным цветом. Для определения области граничного заполнения могут служить как внешние, так и внутренние границы. Примеры описания цветных областей приведены на рис. 4.26.

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

Область, заданная с помощью цветной границы (панель а), при использовании четырехсвязного алгоритма граничного заполнения закрашивается только частично (панель б)

Рис. 4.28. Область, заданная с помощью цветной границы (панель а), при использовании четырехсвязного алгоритма граничного заполнения закрашивается только частично (панель б)

На рис. 4.27 показаны два способа обработки соседних пикселей в текущем тестовом положении. На рис. 4.27, а проверяются четыре соседние точки - пиксели, которые находятся справа, слева, сверху и снизу от текущего пикселя. Области, которые заполняются таким способом, называются четырехсвязными. Второй способ, показанный на рис. 4.27, б, используется для закрашивания более сложных фигур. Здесь в число соседей, требующих проверки, входят еще четыре диагональных пикселя, кроме тех, которые расположены по кардинальным направлениям. Методы заполнения, в которых используется такой подход, называются восьмисвязными. При использовании восьмисвязного алгоритма граничного заполнения внутренняя область, изображенная на рис. 4.28, будет закрашена правильно, а при использовании четырехсвязного алгоритма граничного заполнения будет закрашена только часть этой области.

void boundaryFill4 (int х, int у, int fillColor, int borderColor) {

int interiorColor;

/* Задается текущий цвет fillColor, затем выполняются следующие операции. */ getPixel (х, у, interiorColor);

if ((interiorColor != borderColor) && (interiorColor

!= fillColor)) {

setPixel (x, у); // Задается цвет пикселя fillColor.

boundaryFill4 (x + 1, у , fillColor, borderColor);

boundaryFill4 (x - 1, у , fillColor, borderColor);

boundaryFill4 (x , у + 1, fillColor, borderColor);


⇐ вернуться назад | | далее ⇒