【请教】请教关于stdPicture加载到DC的问题
vb吧
全部回复
仅看楼主
level 13
xuqiancun3 楼主
今天遇到一个很头疼的问题,查了很多资料也没弄清楚。
就是加载一张本地图片为stdPicture,然后将stdPicture装进一个DC中,最后将这个DC画到另一个DC中。如果图片文件是jpg,BMP格式的文件,操作可以正常进行。如果图片是ico,cur格式的,就没有反应。
如果用PaintPicture方式,jpg,bmp,ico,cur 格式的都可以正常显示。
还请懂这块指教。
下面是代码
2020年03月21日 12点03分 1
level 13
xuqiancun3 楼主
Option Explicit
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Const SRCCOPY = &HCC0020
Private Sub Command1_Click()
Dim mDC As Long
Dim tmpPic As StdPicture
Set tmpPic = LoadPicture("C:\Users\Administrator\Desktop\hbt_login.bmp")
'这里加载图片文件如果是jpg,bmp格式,窗体可以显示图片,如果是ico,cur格式,则窗体不显示图片,也不报错
Dim aHdc As Long
aHdc = GetDC(0) '获取桌面DC
mDC = CreateCompatibleDC(aHdc) '创建mDC
SelectObject mDC, tmpPic.Handle '将图片装入mdc
ReleaseDC 0, aHdc '释放aHdc
BitBlt Me.hdc, 0, 0, 200, 200, mDC, 0, 0, vbSrcCopy '将mDC画入窗体
DeleteDC mDC '删除mDC
End Sub
Private Sub Command2_Click()
Dim tmpPic As StdPicture
Set tmpPic = LoadPicture("C:\Users\Administrator\Desktop\hand.cur")
'用PaintPicture方式,jpg,bmp,ico,cur格式图片都可以显示
Me.PaintPicture tmpPic, 0, 0
End Sub
2020年03月21日 12点03分 2
level 13
xuqiancun3 楼主
二楼贴代码,不知道有没有贴出来。还望指教。
或者还有什么别的办法,将stdPicure 显示到DC场景中吗?
2020年03月21日 12点03分 3
level 13
bmpPic.type =3时用DrawIcon绘制,selectobject没有选入图标的句柄
2020年03月21日 12点03分 5
好,非常感谢,我试下。随风大神,刚才想艾特你,不知道怎么艾特[哈哈]
2020年03月21日 12点03分
我当时也测试的type,jpg和bmp 的type 是1,ico和cur的type是3。网上找这写type的说明也没找到
2020年03月21日 12点03分
level 13
xuqiancun3 楼主
怎么4楼没有显示出来?
2020年03月21日 12点03分 6
level 13
其实StdPicture的Type的值这个,1= vbPicTypeBitmap,3=vbPicTypeIcon
2020年03月21日 13点03分 7
level 1
请教:StdPicture是什么?
2020年07月30日 14点07分 8
是图片对象,LoadPicture和LoadResData加载时可以设置到这个对象中,PaintPicture可以绘制出来
2020年07月30日 15点07分
1