Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > есть ли функции заливки цветом в WinApi?


Автор: victor79 13.1.2013, 15:04
У меня задача отрисовки плоскостей - контуры и их заливка.

Контуры из произвольной последовательности прямых и секторов окружности.

Про контуры понятно - их можно последовательно отрисовать LineTo и Arc (кажется).

А вот есть ли функции
1. заливки фигуры по контуру (на белом фоне черным контур - и залить от указанной принадлежащей точке).
2. заливка всего рисунка по указанному цвету (весь белый заменить на указанный brush)


Автор: artsb 13.1.2013, 20:03
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162814%28v=vs.85%29.aspx и остальные функции из раздела http://msdn.microsoft.com/en-us/library/windows/desktop/dd162715%28v=vs.85%29.aspx.

Автор: artsb 13.1.2013, 20:28
Вот ещё интересная функция - http://msdn.microsoft.com/ru-ru/library/windows/desktop/dd162726%28v=vs.85%29.aspx

Автор: YDean 15.1.2013, 18:43
BeginPath
EndPath
FillPath

Автор: victor79 16.1.2013, 05:07
FloodFill/ExtFloodFill - эта мне подошла, спасибо.
про BeginPath-EndPath еще не читал, но обязательно прочитаю, спасибо.

В результате, при помощи последовательности
Код

hbmp = CreateCompatibleBitmap(dc,w,h);
dcbmp = CreateCompatibleDC(dc, hbmp);
SelectObject(dcbmp, hbmp);

после на новый dc рисуем замкнытый контур любой конфигурации,
и заливаем внешнюю часть черным цветом - получили черно-белую маску маску.
(и еще раз отрисовать котур белым)

нужно создать еще один dcbmp куда сначала залить весь фоном, после отрисовать нужный
контур.

Теперь функцией BitBlt, SRCAND + BitBlt, SRCINVERT - обрезаем и получаем нужную
залитую фигуру.

А теперь на экранный DC сначала маской BitBlt,SRCPAINT - зачистили место под картинку,
после второй картинкой BitBlt,SRCAND - нарисовали то что нужно.

Алгоритма в коде пока нету, поэтому текстовое описание))).


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)