Как создать узор кисти с помощью PNG-изображения.
У меня есть изображение с черными точками на белом фоне, которое я использую для создания кисти Паттена и изменения цвета черных точек с помощью SetTextColor. Я создал CBitmap с помощью PNG-изображения(я использовал CPngImage, чтобы получить HBITMAP и прикрепил его к CBitmap ). Теперь я создал PatternBrush с помощью(CreatePatternBrush) с этим растровым изображением, проблема в том, что цвет кисти не меняется, если я использую изображение PNG. Но это меняется, когда я использую изображение в формате bmp.
Что я уже пробовал:
вот вам какой-то код
CBitmap bmp;
если (БМП.LoadBitmap(IDB_BITMAP1))
{
если (кисть.CreatePatternBrush(&bmp))
pOldBrush = pDC->SelectObject(&brush);
}
pDC->SetTextColor(color); это работает
CBitmap bmp;
CPngImage pngImage;
HBITMAP hBitmap = NULL;
if ( pngImage.Load(MAKEINTRESOURCE(nIDResource)) )
{
hBitmap = (HBITMAP)pngImage.Отсоединить();
}
if ( hBitmap )
формат BMP.Прикрепить(hBitmap);
если (кисть.CreatePatternBrush(&bmp))
pOldBrush = pDC->SelectObject(&brush);
pDC->SetTextColor(color); это не работает
Richard MacCutchan
Я не могу найти метод отсоединения в документации: Класс CPngImage[^]. И я не уверен, что вы можете просто привести PNG к HBITMAP таким образом.
Ravi Teja
CPngImage является производным от CBitmap, который, в свою очередь, является производным от класса CGDIObject, откуда происходит метод Detach. если вы можете проверить метод CMFCToolBarImages::LoadStr в папке VC\atlmfc\src\mfc, то вот как они получают HBITMAP из PNG-файла