如何从 VB PocketPC 应用程序保存 Bitmap






3.20/5 (4投票s)
如何使用 VB 从 Pocket PC 应用程序保存位图。
引言
在 .NET Framework CE 中缺少许多有用的函数。为了充分利用移动设备的有限资源,仅包含 .NET Framework 的子集。Save
和 FromFile
函数缺失。虽然有 2 个很好的 C# 示例说明如何执行此操作,但我没有找到任何 VB 的示例。因此,本文档描述了如何在 Pocket PC 上的 VB.NET 中保存和加载位图。
方法 1:在 VB 中将 MS C# 代码用作子项目
C# 中有许多功能不容易转换为 VB。因此,为了避免将所有内容翻译成 VB 并拥有 2 个版本来控制,我只是将 Microsoft 的 C# 示例 作为子项目包含进来。按照以下步骤操作:
- 打开需要位图功能的 VB Pocket PC 项目
- 右键单击解决方案,选择“添加”,然后选择“现有项目”。
- 选择 ImageEditor.csdproj
- 右键单击 Image Editor 子项目,选择“属性”。
- 将输出类型更改为“类库”。
- 右键单击 Image Editor 并构建。
- 单击 VB 项目的“引用”文件夹,然后添加引用。
- 在要保存位图的窗体中添加
Imports ImageEditor
要保存位图
SaveFileDialog1.Filter = "Bitmap files (*.bmp)|*.bmp" If SaveFileDialog1.ShowDialog() = DialogResult.OK Then Me.pDrawWindow.Refresh() ImageEditor.BitmapFile.SaveToFile(Me.pDrawWindow, SaveFileDialog1.FileName, 16, Me.bitmap.Width, Me.bitmap.Height) End If
要加载位图
OpenFileDialog1.Filter = "Bitmap files (*.bmp)|*.bmp" If OpenFileDialog1.ShowDialog() = DialogResult.OK Then Application.DoEvents() Cursor.Current = Cursors.WaitCursor Dim s As Stream = File.OpenRead(OpenFileDialog1.FileName) Me.bitmap = New Bitmap(s) s.Close() Me.pDrawWindow.Invalidate() Cursor.Current = Cursors.Default End If
方法 2:直接从 VB 写入位图文件结构
这种方法非常慢,我不建议使用。我将其包含进来是因为它展示了在使用前面示例中的 P/Invoke 方面的性能优势。该方法基于来自 此处 的 C# 示例。