【问题标题】:I can't load bitmaps on WinCE我无法在 WinCE 上加载位图
【发布时间】:2009-10-27 19:28:05
【问题描述】:

我编写了一个在 WinCE 屏幕上显示图标的小项目。图标是 28x28 16 色 BMP 文件,放在主资源文件 (Resources.resx) 中(主 Form 的 resx 也有同样的问题,GIF 文件也不行)。

我第一次尝试从资源中获取任何位图时,从 System.Drawing.Bitmap._InitFromMemoryStream 调用的 Microsoft.AGL.Common.MISC.HandleAr 引发了带有消息“Exception”的 Exception 类型的异常.

我有两个 WinCE 设备。此错误仅发生在其中一个上;另一个工作正常。除了这个问题,该应用程序适用于两种设备。该应用程序还使用了一些涉及 DIB 的本机代码,并且运行良好。有什么想法吗?

更新:如果我尝试从文件加载位图,也会出现同样的错误。我还尝试了 1 位(黑白)、8 位和 24 位位图,但均无济于事(WinCE 帧缓冲区最常见的是 16 位,但我没有可以生成 16 位位图的图像编辑器。)

【问题讨论】:

  • 这些是什么设备?你能张贴位图的链接吗?
  • 这两台设备是否运行相同的操作系统版本?还是它们是两种不同类型的设备? .NET CF 依赖于操作系统提供的图像编解码器。因此,可能是特定的操作系统映像可能不支持文档中详述的每种文件格式。
  • 你说你可以创建一个DIB。 DDB怎么样?故障设备的显示驱动程序是否支持 16 色调色板?
  • 是否有任何关于 .NET CF 如何使用图像提供的“编解码器”的文档?
  • 我尝试在 Compact Framework 中简单地创建一个 DDB 和 DIB 并且两者都有效。请参阅blog.opennetcf.com/ctacke/… - (w,h) 构造函数应该创建一个 DDB,(w,h,pixelformat) 构造函数应该创建一个 DIB。

标签: .net exception compact-framework resources bitmap


【解决方案1】:

我遇到了类似的问题,并且已经解决了好几天。我要尝试的下一件事是将位图作为 DIB 存储在资源文件中,使用 LoadResource 加载它,使用 GetCompatibleDC 将其转换为 DDB 并将 DIB “绘制”到 DC,这应该创建一个 DDB。我认为关键是使用 CreateCompatibleBitmap。我将报告我的发现。

【讨论】:

  • 我希望你是用 C# 编写的...我很确定 C# 资源文件与 C++ 资源文件不同。
猜你喜欢
  • 2016-12-10
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
相关资源
最近更新 更多