是这样的,我要做一个用sock通信的考勤,现在连接已经建立,可以传送数据,但是图片不知道怎么传 ,初步想把图片变为数据流传到客户端 ,到客户端再把这个内存流变成图片 ,具体代码怎么写
,一点都不会 ,以前没有写过VB昨天才学的 ,谁有现成的代码吗? 十万火急啊!下午就要。不胜感激!
,一点都不会 ,以前没有写过VB昨天才学的 ,谁有现成的代码吗? 十万火急啊!下午就要。不胜感激!
解决方案 »
- 送分给NoNameOk
- 昨天的问题,没搞清楚啊
- 请问如何用MMContro控件实现在指定窗口或图片框播放,并可充满窗口或图片框,而且窗口可任意缩放,实现全屏幕播放(MMControl控件属性信
- 请问如何让 textbox 中的 文字 默认为 全部被选中状态呢
- 100分泣求EXCEL-VBA的自定义函数的二个问题
- 简单问题:String类型的变量,最多能存储多少个字符??
- 请问繁体中文或英文 sql server2000 个人版的下载地址??哪位大侠知道?
- 设备场景中,逻辑坐标的长度到底是一个什么概念
- 怎样让窗口上的最大化按钮不可点击?
- 怎样定义多个热键?
- 怎样实现这样的打包方式?
- 有序导出Excel有错 或 清空存在的Excel表
http://community.csdn.net/Expert/topic/3209/3209104.xml?temp=9.286135E-02
'利用IPersistStream接口和IStream接口实现
'可以从http://www.mvps.org/emorcillo/vb6/tlb/tl_ole.zip下载文件,下载后解压,并注册、引用olelib.tlb'作为示例,需要两个picturebox,并为picture1预先载入一幅图片
Option ExplicitConst GMEM_MOVEABLE = &H2
Const GMEM_ZEROINIT = &H40
Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As LongConst PictureID = &H746C&Private Type PictureHeader
Magic As Long
Size As Long
End Type
Public Sub Picture2Array(ByVal oObj As StdPicture, aBytes() As Byte)'把图片变为数据流
Dim oIPS As IPersistStream
Dim oStream As IStream
Dim hGlobal As Long
Dim lPtr As Long
Dim lSize As Long
Dim Hdr As PictureHeader
Set oIPS = oObj
Set oStream = CreateStreamOnHGlobal(0, True)
oIPS.Save oStream, True
hGlobal = GetHGlobalFromStream(oStream)
lSize = GlobalSize(hGlobal)
lPtr = GlobalLock(hGlobal)
If lPtr Then
lSize = lSize - Len(Hdr)
ReDim aBytes(0 To lSize - 1)
MoveMemory aBytes(0), ByVal lPtr + Len(Hdr), lSize
End If
GlobalUnlock hGlobal
Set oStream = NothingEnd Sub
Public Function Array2Picture(aBytes() As Byte) As StdPicture'把数据流变成图片
Dim oIPS As IPersistStream
Dim oStream As IStream
Dim hGlobal As Long
Dim lPtr As Long
Dim lSize As Long
Dim Hdr As PictureHeader
Set Array2Picture = New StdPicture
Set oIPS = Array2Picture
lSize = UBound(aBytes) - LBound(aBytes) + 1
hGlobal = GlobalAlloc(GHND, lSize + Len(Hdr))
If hGlobal Then
lPtr = GlobalLock(hGlobal)
Hdr.Magic = PictureID
Hdr.Size = lSize
MoveMemory ByVal lPtr, Hdr, Len(Hdr)
MoveMemory ByVal lPtr + Len(Hdr), aBytes(0), lSize
GlobalUnlock hGlobal
Set oStream = CreateStreamOnHGlobal(hGlobal, True)
oIPS.Load oStream
Set oStream = Nothing
End If
End FunctionPrivate Sub Command1_Click()
Dim buff() As Byte
Picture2Array Picture1.Picture, buff
'测试
Set Picture2.Picture = Array2Picture(buff)
End Sub