有这么一个函数,可以给frame这样的控件加上背景图片,不过问题在于,加上背景以后caption没了,边框线没了,大家有啥好招?
Private Sub SetBackGroundImage(aobj As Object, astrImgFilePath As String) 'SetBackGroundImage(控件名称,图片文件的路径) Dim lngDc As Long
Dim lngImgDc As Long
Dim pBmp As IPictureDisp
Set pBmp = LoadPicture(astrImgFilePath)
lngImgDc = CreateCompatibleDC(0)
SelectObject lngImgDc, pBmp.Handle
lngDc = GetDC(aobj.hwnd) BitBlt lngDc, 0, 0, aobj.Width, aobj.Height, lngImgDc, 0, 0, vbSrcCopy Set pBmp = Nothing
DeleteDC lngImgDc ReleaseDC aobj.hwnd, lngDc
End Sub
Private Sub SetBackGroundImage(aobj As Object, astrImgFilePath As String) 'SetBackGroundImage(控件名称,图片文件的路径) Dim lngDc As Long
Dim lngImgDc As Long
Dim pBmp As IPictureDisp
Set pBmp = LoadPicture(astrImgFilePath)
lngImgDc = CreateCompatibleDC(0)
SelectObject lngImgDc, pBmp.Handle
lngDc = GetDC(aobj.hwnd) BitBlt lngDc, 0, 0, aobj.Width, aobj.Height, lngImgDc, 0, 0, vbSrcCopy Set pBmp = Nothing
DeleteDC lngImgDc ReleaseDC aobj.hwnd, lngDc
End Sub
修改BitBlt的X,Y参数:
BitBlt lngDc, 2, 8, aobj.Width, aobj.Height, lngImgDc, 0, 0, vbSrcCopy
picture 加 frame 应该就可以