如何比较游标和位图以查看游标是否由位图制成?

时间:2019-02-04 15:21:43

标签: c# winforms unit-testing bitmap

我正在创建一个单元测试,我有一个Cursor,它应该由特定的Bitmap制成。 Cursor使用以下代码创建:

cursor = new Cursor(bmp.GetHicon());

其中bmpBitmap

这总是使测试失败(由bmp.GetHicon()创建的句柄总是新的):

Assert.AreEqual(bmp.GetHicon(), cursor.Handle);

我还考虑过使用Icon.FromHandle

1 个答案:

答案 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);
}