Parameters:
hWndForm Target Window Handle
PNG_img PNG image file name
m_Width Size of the target window
m_Height
Code: Select all
Sub PNGwindowImageDisplay(hWndForm As hWnd,PNG_img As String , m_Width As Long ,m_Height As Long )
Dim nDc As HDC = GetDC(hWndForm)
Dim As HDC hMemDC =CreateCompatibleDC(nDc)
Dim bmpinfo As BITMAPINFO
bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER)
bmpinfo.bmiHeader.biBitCount = 32
bmpinfo.bmiHeader.biHeight = m_Height
bmpinfo.bmiHeader.biWidth = m_Width
bmpinfo.bmiHeader.biPlanes = 1
bmpinfo.bmiHeader.biCompression = BI_RGB
bmpinfo.bmiHeader.biXPelsPerMeter = 0
bmpinfo.bmiHeader.biYPelsPerMeter = 0
bmpinfo.bmiHeader.biClrUsed = 0
bmpinfo.bmiHeader.biClrImportant = 0
bmpinfo.bmiHeader.biSizeImage = bmpinfo.bmiHeader.biWidth * bmpinfo.bmiHeader.biHeight * bmpinfo.bmiHeader.biBitCount / 8
Dim pp As Long Ptr
Dim m_Bmp As HBITMAP = CreateDIBSection(hMemDC, @bmpinfo, DIB_RGB_COLORS, @pp, 0, 0)
Dim hOldBitmap As HBITMAP = SelectObject(hMemDC, m_Bmp)
Dim m_GpDC As GpGraphics Ptr ' 主DC 的 GDI+句柄
GdipCreateFromHDC(hMemDC, @m_GpDC)
Dim nGpimage As GpImage Ptr ,wFile As Wstring *260 = PNG_img
GdipLoadImageFromFile(wFile , @nGpimage)
GdipDrawImageRectRect m_GpDC, nGpimage, 10, 10, 186, 114, 0, 0, 186, 114, 2, NULL, NULL, NULL
GdipDisposeImage nGpimage
GdipDeleteGraphics(m_GpDC)
Dim ptSrc As POINT
Dim blf As BLENDFUNCTION
blf.BlendOp = AC_SRC_OVER
blf.BlendFlags = 0
blf.SourceConstantAlpha = 255
blf.AlphaFormat = AC_SRC_ALPHA
Dim psize As POINT
psize.x = m_Width
psize.y = m_Height
UpdateLayeredWindow(hWndForm, NULL, NULL, @psize, hMemDC, @ptSrc, 0, @blf, ULW_ALPHA)
SelectObject(hMemDC, hOldBitmap)
DeleteObject(m_Bmp)
DeleteDC(hMemDC)
ReleaseDC(hWndForm, nDc)
End Sub