2009-10-27 37 views
1

我写了一个在WinCE屏幕上显示图标的小项目。这些图标是放置在主资源文件(Resources.resx)中的28x28 16色BMP文件(主窗体的resx具有相同的问题,并且GIF文件也不起作用)。我无法在WinCE上加载位图

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

我有两个WinCE设备。这个错误只发生在其中的一个上;其他工作正常。除了这个问题之外,该应用程序可以在两个设备上运行。该应用程序还使用一些涉及DIB的本地代码,并且工作正常。有任何想法吗?

更新:如果我尝试从文件加载位图,则会发生同样的错误。我也尝试过1位(黑色&白色),8位和24位位图无效(WinCE帧缓冲区最常见的是16位,但我没有图像编辑器可以产生16位位图。)

+0

这些是什么设备?你能发布链接到位图吗? – MusiGenesis 2009-10-27 19:39:04

+1

这两个设备是否运行相同的操作系统版本?或者他们是两种截然不同的设备? .NET CF依赖于操作系统提供的图像编解码器。因此,可能特定的操作系统映像可能不支持文档中详述的每种文件格式。 – 2009-10-27 23:38:20

+0

你说你可以创建一个DIB。 DDB怎么样?故障设备的显示驱动程序是否支持16色调色板? – ctacke 2009-10-28 01:16:45

回答

0

我有一个类似的问题,并已为此工作了好几天。接下来我要尝试将位图作为DIB存储在资源文件中,使用LoadResource加载它,并使用GetCompatibleDC将其转换为DDB,并将DIB“绘制”为DC,并创建DDB。我认为关键是使用CreateCompatibleBitmap。我会报告我的调查结果。

+0

我希望你用C#写这篇文章......我非常肯定C#资源文件与C++资源文件不同。 – Qwertie 2009-12-17 16:17:34