2010-07-06 61 views
2

我有一个资源程序集,其中包含我的应用程序使用的各种字符串,图标和位图。如何为单元测试创​​建内存中图标

我写了一个资源管理器类,我想单元测试。我设法创建了具有内存字符串(duh)和位图的单元测试,但我正在努力处理图标资源。

只需使用高度和宽度参数即可轻松创建位图,但图标似乎需要有效的流。

我已经试过:

Icon icon = new Icon(new MemoryStream(), new Size(10, 15)); 

但是,这给我的错误“论证‘图像’必须是可以被用作图标的图片”。

很显然,我正在尝试编写单元测试,以避免必须从文件系统加载实际图标。此外,ResourceManager类正在处理程序集中的嵌入式资源,因此我不想在单元测试程序集中嵌入真正的图标,否则我将使用类似的代码来促进测试,这看起来反直观。

任何想法?

干杯, 奔的标准系统图标

+0

您是否尝试将图标存储为二进制值(或常量),然后将二进制值写入流? – Kane 2010-07-06 10:37:08

+0

我刚刚看了一下,并随机选择了一个图标,创建了一个长度为34494的字节数组。不确定如何获得一个有效的字节数组,其长度为常量。 – 2010-07-06 10:57:23

+0

从查看文档,我认为你将不得不提供一个真正的图标流,我相信它也包含一些元数据。所以如果不在这里使用嵌入式资源,它将很难脱身。 – Grzenio 2010-07-06 11:02:54

回答

2

为什么不直接使用吗?像

Icon icon = System.Drawing.SystemIcons.WinLogo; 
+0

嗨,这是一个好主意。我不知道这个系统图标的集合。这确实让我有一个内存中的图标,但我仍然有一些问题。 我可以使用Icon.Save方法将WinLogo转换为流,但是当我使用此流重新创建使用图标构造函数的图标时,我得到了与“有效图片”相同的错误消息 – 2010-07-06 12:55:23

+0

好吧,这是因为在该图标被写入到我忽略的位置归零的流中。现在工作!谢谢。 – 2010-07-06 13:04:01

相关问题