Qbasic:
# Закраска произвольной области
Если на экране нарисована замкнутая кривая, то область внутри нее можно закрасить. Также можно закрасить и область, оставшуюся снаружи от кривой. Для этого используется оператор
PAINT (x, y), цвет_закраски, цвет_границы
Точка (x, y) должна попасть внутрь области, подлежащей закрашиванию.
Если граница области “дырявая”, то краска выльется за пределы области, даже если дырка всего в один пиксель. То же самое произойдет, если граница области содержит по недосмотру кусочек другого цвета - для оператора PAINT это все равно что дырка.
Пример. Нарисовать флаг Японии - красный круг на белом фоне.
‘--------- Флаг Японии ---------
SCREEN 7
LINE (10, 10)-(100, 50), 15, BF
CIRCLE (55, 30), 20, 12
PAINT (55, 30), 12, 12
|
Чтобы упростить построение сложного контура, можно составить его из нескольких простых. Например, крест на флаге Швеции сделать из двух закрашенных прямоугольников, серп на флаге Турции - из двух кругов, один из которых закрасить белым, а другой, меньший, красным.
При закраске окружности в качестве начальной точки для оператора PAINT удобно брать центр окружности, в других случаях, особенно при закраске маленьких областей, легко “промахнуться” мимо области. Чтобы проконтролировать расположение начальной точки, заменим оператор PAINT оператором PSET(x, y). Убедимся в том, что точка (x, y) попала в нужное место, и после этого вернем оператор PAINT на свое законное место.
Автор: Гутман Г.Н. Мой любимый QuickBASIC, 2001г
|