Как нарисовать patternBrush с прозрачным фоном (GDI)? - PullRequest
0 голосов
/ 18 июня 2009

Я не могу нарисовать узор с прозрачным фоном. Это мой фрагмент:

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 ничего не сказано о прозрачности. Я думаю, этот режим можно использовать? Или это ошибка?

Спасибо!

1 Ответ

1 голос
/ 19 июня 2009

Режим TRANSPARENT означает, что фон не будет заполнен до рисования вашей кисти. Но ваша кисть не содержит прозрачных пикселей и все равно перерисовывает фоновые пиксели. Четвёртый аргумент в CreateBitmap был установлен на 1 в вашем примере. Это означает, что растровое изображение является монохромным.

Вам нужно использовать 32-битное растровое изображение, чтобы использовать прозрачность в кистях. GDI поддерживает прозрачность с некоторыми ограничениями. Используйте GDI + для полной поддержки прозрачности.

...