|
本帖最后由 wszjljx 于 2011-9-21 23:00 编辑
Public Sub ByteDrawImage(ImageData() As Byte, ByVal DeviceHandle As Long, Optional ByVal Left As Long = 0, Optional ByVal Top As Long = 0, Optional ByVal Width As Long = 0, Optional ByVal Height As Long = 0)
On Error Resume Next
Dim GdiValue As Long
Dim DrawWidth As Long
Dim DrawHeight As Long
Dim ImageValue As Long
Dim StreamValue As Long
Dim GdiDeviceHandle As Long
Dim GdiObject As GdiplusStartupInput
If DeviceHandle = 0 Then Exit Sub
DrawWidth = Width
DrawHeight = Height
GdiObject.GdiplusVersion = 1
Call GdiplusStartup(GdiValue, GdiObject)
Call GdipCreateFromHDC(DeviceHandle, GdiDeviceHandle)
Call CreateStreamOnHGlobal(ImageData(0), 0, StreamValue)
Call GdipLoadImageFromStream(StreamValue, ImageValue)
If DrawWidth <= 0 Then Call GdipGetImageWidth(ImageValue, DrawWidth)
If DrawHeight <= 0 Then Call GdipGetImageHeight(ImageValue, DrawHeight)
Call GdipDrawImageRect(GdiDeviceHandle, ImageValue, Left, Top, DrawWidth, DrawHeight)
Call GdipDisposeImage(ImageValue)
Call GdipDeleteGraphics(GdiDeviceHandle)
Call GdiplusShutdown(GdiValue)
End Sub
利用此代码直接将字节数组图片绘制在窗体上 但是每绘制一次使用的内存就会增大 不清楚该如何释放
经检查 导致内存增加不释放的时CreateStreamOnHGlobal该API函数
求教如何释放此函数创建的流对象... |
|