Как нарисовать узорную кисть с прозрачным фоном (GDI)?

StackOverflow https://stackoverflow.com/questions/1013245

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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+ для полной поддержки прозрачности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top