我使用GetDIBits将一个图片读入了一个byte数组并且经过了运算处理,
不过我不想用SetDIBitsToDevice显示这样图片,我定义了一个IPictureDisp变量,有什么方法可以将这个byte数组中的图片置入IPictureDisp变量中,
这样我只需要picture1.picture=IPictureDisp变量就可以显示图片了……使用SetDIBitsToDevice无法在窗体为隐藏的情况下将图片都显示好,然后再显示窗体。
不过我不想用SetDIBitsToDevice显示这样图片,我定义了一个IPictureDisp变量,有什么方法可以将这个byte数组中的图片置入IPictureDisp变量中,
这样我只需要picture1.picture=IPictureDisp变量就可以显示图片了……使用SetDIBitsToDevice无法在窗体为隐藏的情况下将图片都显示好,然后再显示窗体。
解决方案 »
- Replace vbCrLf和Chr$(13)
- 如何做一个窗体,固定占据屏幕顶端一行,其它窗体在最大化时也不能进入这个区域?
- 声明一个DLL文件时碰到有关APP对象的问题.及请教声明DLL文件时路径的问题
- 欢迎你一起加入编程小组!QQ群号:437784
- 怎么样将一个目录设置为共享???API方法或者其他方法是什么???请大家多指教小虾!
- 请问怎么在程序里改变access数据库的表名??非常感谢!!!!!!
- 求助(关于进度条!)
- 如何使用VB6下的打包程序在程序组中添加一个卸载项
- 关于Vsflexgrid的问题。
- xxgrid下拉问题
- 如何调用dll函数中的资源
- 请问:如何在VB里判断SQL Server2k有没有某个叫做TableName的表?
或者可以自己创建一个 IPictureDisp。
大概因为 IPictureDisp 是 GDI32 句柄s 的封装(而且只是封装),VB 程序员没必要知道HBITMAP是什么。
cbSizeofStruct As Long
PicType As Long
hImage As Long
xExt As Long
yExt As Long
End TypePrivate Type GUID
Part1 As Long
Part2 As Integer
Part3 As Integer
Part4 As Integer
Part5(1 To 6) As Byte
End TypePrivate Declare Function OleCreatePictureIndirect Lib "Olepro32" _
(ByRef pPictDesc As PICTDESC, ByRef RIID As GUID, _
ByVal fOwn As Long, ByRef ppvObj As Any) As Long
Private Declare Function IIDFromString Lib "OLE32" _
(ByVal lpsz As String, ByRef lpiid As GUID) As LongPublic Function PictureFromHandle(ByVal Handle As Long, _
ByVal PictureType As PictureTypeConstants, _
Optional ByVal PictureOwnsHandle As Boolean = False) _
As StdPicture Dim nPicture As Picture
Dim nPictDesc As PICTDESC
Dim nIID As GUID
Dim nHResult As Long
Const kPictureIID = "{7BF80981-BF32-101A-8BBB-00AA00300CAB}" With nPictDesc
.cbSizeofStruct = Len(nPictDesc)
.PicType = PictureType
.hImage = Handle
End With
nHResult = IIDFromString(StrConv(kPictureIID, vbUnicode), nIID)
If nHResult Then
Err.Raise nHResult
Else
nHResult = OleCreatePictureIndirect(nPictDesc, nIID, _
PictureOwnsHandle, nPicture)
If nHResult Then
Err.Raise nHResult
Else
Set PictureFromHandle = nPicture
End If
End If
End Function