我使用DWM创建了一个带有自定义窗口框架的窗口,其中引用了Custom Window Frame Using 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);
答案 0 :(得分:1)
使用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);