Как сравнить курсор и растровое изображение, чтобы увидеть, сделан ли курсор из растрового изображения? - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю модульный тест, и у меня есть Cursor, который должен быть сделан из определенного Bitmap.Cursor создается с использованием следующего кода:

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

, где bmp является Bitmap.

Это всегда приводило к неудаче теста (дескриптор, созданный bmp.GetHicon()всегда новый):

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

Я тоже думал об использовании Icon.FromHandle.

1 Ответ

0 голосов
/ 04 февраля 2019

На самом деле вы ищете, как сравнить два курсора.

У вас есть растровое изображение, и у вас есть курсор, и вы хотите проверить, был ли курсор создан с использованием растрового изображения.Для этого, в качестве опции, создайте курсор из растрового изображения, а затем сравните его, сохраните эти два курсора (новый, созданный из растрового изображения и существующий) в поток и сравните потоки.

Например:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...