Как нарисовать узорную кисть с прозрачным фоном (GDI)?
Вопрос
Я не могу нарисовать узор с прозрачным фоном.Это мой фрагмент:
bitmap.CreateBitmap(8, 8, 1, 1, &bits)
brush.CreatePatternBrush(&bitmap)
hbrush = pCgrCurrentDC->SelectObject(&brush);
// set text color
TextCol = pCgrCurrentDC->SetTextColor(CgrColourPalRGB);
int oldBkgrdMode = pCgrCurrentDC->SetBkMode(TRANSPARENT);
//draw polygon
pCgrCurrentDC->Polygon(CgrBuffer, n);
Документ на MSDN ничего не говорит о прозрачности.Я так понимаю, этот режим можно использовать?Или это ошибка?
Спасибо!
Решение
Режим TRANSPARENT
означает, что фон не будет заполнен до того, как будет нарисована кисть.Но ваша кисть не содержит прозрачных пикселей и она все равно перерисовывает пиксели фона.Четвертый аргумент в CreateBitmap
в вашем образце было установлено значение 1.Это означает, что растровое изображение является монохромным.
Чтобы использовать прозрачность в кистях, вам необходимо использовать 32-битное растровое изображение.GDI поддерживает прозрачность с некоторыми ограничениями.Используйте GDI+ для полной поддержки прозрачности.
Не связан с StackOverflow