【发布时间】:2019-07-28 18:56:30
【问题描述】:
在旧版 VB6 应用程序中,我将 BMP 图像存储在 PictureBox 中。我可以使用以下方法将其保存到 BMP 文件中:
SavePicture picBox.Picture, "BmpImage.bmp"
但是,我想要将 PictureBox 中的 BMP 图像保存到一个字节数组中。我需要存储整个 BMP,包括 BMP 标头。实际上,我想要将相同的数据写入 BMP 文件但在字节数组中,而无需写入和读取磁盘文件。
我在网上搜索过,但没有找到任何解决此特定问题的内容。
我确实找到了一个建议写入 MemoryStream 的link。所以我尝试了这个:
10 Dim bmpArray() As Byte
20 Dim memStream As New System.IO.MemoryStream
50 SavePicture picBox.Picture, memStream
60 bmpArray = memStream.GetBuffer
但是这不能编译。我为“System.IO.MemoryStream”得到“未定义用户定义的类型” 我已将 System 包含在我的参考列表中。我也尝试过声明为 New MemoryStream,但仍然出现“未定义用户定义类型”编译器错误。
我还查看了similar question,但是提供的解决方案仅将像素数据存储在数组中。
【问题讨论】:
-
您尝试使用的代码用于 VB.Net,因此出现错误...
-
JonN,@Idle_Mind 指的是内存流代码。这在 VB6 中不存在。
-
如果您可以选择编写 .NET 代码,您可以创建一个 VB.NET 类来执行您想要的任何操作,然后从 VB6 调用它。当然,要使其正常工作,还有一些初始设置开销,以及您必须进行的任何部署更改。
-
@Idle_Mind 是的,我怀疑这是因为第一个链接是 .NET 的解决方案,但我想试试看 MemoryStream 在 VB6 中是否可用。我希望这里有人知道如何在 VB6 中创建等效的内存流或其他方式将 PictureBox 转换为字节数组。
-
做一些搜索。在 VB6 中有很多代码可以做到这一点,但这并不是很容易在这里发布的,因为有很多小步骤,每个步骤都应该有错误检查。这个网站更适合简单的问答,而不是请求除了微小的代码示例。
标签: arrays vb6 picturebox memorystream bmp