Я создал окно с пользовательской рамкой окна, используя DWM со ссылкой на Пользовательская оконная рама с использованием DWM. Я попытался добавить растровое изображение в строку заголовка, используя StretchBlt
, Тем не менее, он не показал должным образом. Изображение будет ярче, если оно нарисовано на рамке:
Если рамка черная, изображение отображается правильно. Как вы решаете эту проблему?
HDC hdc;
PAINTSTRUCT ps;
HBITMAP hbm=(HBITMAP)LoadImage(NULL,"C:\\Users\\admin\\Desktop\\Bitmap32.bmp",
IMAGE_BITMAP,166,160,LR_LOADFROMFILE);
hdc=BeginPaint(hWnd,&ps);
HDC hdcMem=CreateCompatibleDC(hdc);
SelectObject(hdcMem,hbm);
StretchBlt(hdc,0,0,166,160,hdcMem,0,0,166,160,SRCCOPY);
DeleteDC(hdcMem);
EndPaint(hWnd,&ps);
Используйте GDI + DrawImage()
Graphics graphics(hdc);
Image image(L"image link");
graphics.DrawImage(&image,0,0);
Чтобы решить реальную проблему, используйте SetLayeredWindowAttributes()
установить ключ прозрачности.
SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd,RGB(200,201,202),0,LWA_COLORKEY);