日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

透明GIF图片显示控件

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 透明GIF图片显示控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

透明窗體參見:

https://msdn.microsoft.com/en-us/library/ms997507.aspx

CreateWindowEx是需要設置屬性

WS_EX_LAYERED | WS_EX_TRANSPARENT

這兩個屬性很重要.

繪制操作可以參照此函數做:

OnPaint函數中響應:

void GIFStatic::DrawPNG(HWND hWnd, HDC hdc, int width, int height) {TCHAR *pngFile = L"C:\\Users\\dyh\\Desktop\\文檔\\ico.ooopic.com.png";/********************************************* step 1.* Using Gdiplus to load the image********************************************/RECT wndRect;::GetWindowRect(hWnd, &wndRect);SIZE wndSize = { wndRect.right - wndRect.left, wndRect.bottom - wndRect.top };if (hdc == NULL) hdc = ::GetWindowDC(hWnd);HDC memDC = ::CreateCompatibleDC(hdc);HBITMAP memBitmap = ::CreateCompatibleBitmap(hdc, wndSize.cx, wndSize.cy);::SelectObject(memDC, memBitmap);Gdiplus::Image image(pngFile);Gdiplus::Graphics graphics(memDC);graphics.DrawImage(&image, 0, 0, wndSize.cx, wndSize.cy);// get screen dc HDC screenDC = hdc;POINT ptSrc = { 0, 0 };/********************************************** step 3.* Use UpdateLayeredWindow to Draw the Window**********************************************/BLENDFUNCTION blendFunction;blendFunction.AlphaFormat = AC_SRC_ALPHA;blendFunction.BlendFlags = 0;blendFunction.BlendOp = AC_SRC_OVER;blendFunction.SourceConstantAlpha = 255;UpdateLayeredWindow(hWnd, screenDC, &ptSrc, &wndSize, memDC, &ptSrc, 0, &blendFunction, 2);::DeleteDC(screenDC);::DeleteDC(memDC);::DeleteObject(memBitmap); }完成此函數后需要使用MoveWindow函數將窗體移動回去.

否則窗體會移動至左上角落.

代碼目錄請見下面:

http://download.csdn.net/detail/ab7936573/9496109

總結

以上是生活随笔為你收集整理的透明GIF图片显示控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。