我正在创建一个单元测试,我有一个Cursor
,它应该由特定的Bitmap
制成。 Cursor
使用以下代码创建:
cursor = new Cursor(bmp.GetHicon());
其中bmp
是Bitmap
。
这总是使测试失败(由bmp.GetHicon()
创建的句柄总是新的):
Assert.AreEqual(bmp.GetHicon(), cursor.Handle);
我还考虑过使用Icon.FromHandle
。
答案 0 :(得分:1)
实际上,您正在寻找如何比较两个光标。
您有位图,并且有一个光标,并且要检查是否已使用位图创建了光标。为此,可以选择从位图创建一个游标,然后进行比较,然后将这两个游标(从位图创建的新游标和现有游标)保存到流中并进行比较。
例如:
bool ArEqual(Cursor cur1, Cursor cur2)
{
byte[] bytes1, bytes2;
using (var ico = Icon.FromHandle(cur1.Handle))
using (var fs = new MemoryStream())
{
ico.Save(fs);
bytes1 = fs.ToArray();
}
using (var ico = Icon.FromHandle(cur2.Handle))
using (var fs = new MemoryStream())
{
ico.Save(fs);
bytes2 = fs.ToArray();
}
return bytes1.SequenceEqual(bytes2);
}