К сожалению, класс Image
не реализует оператор ==
или метод Equals
, что означает, что он наследует реализацию по умолчанию от класса Object
, который просто проверяет, совпадают ли ссылки на объекты.Оказывается, это не удастся, даже если изображение назначено на PictureBox
непосредственно из вашего ImageList
.
Итак, вам нужно будет реализовать собственную логику, чтобы проверить, являются ли изображениятот же самый.Есть пара разных подходов.Вы можете либо загрузить каждое из двух изображений в байтовый массив и выполнить побайтовое сравнение, либо вы можете циклически проходить по двум изображениям попиксельно и сравнивать их цвета.Конечно, оба эти метода будут где-то от относительно до неоправданно медленного.Потенциально вы можете оптимизировать, просто сравнив сначала измерения (объект Image
предоставляет свойство Size
, которое возвращает его измерения) и вернув False, если они не равны, но, вероятно, это не такработать в вашем случае, так как все изображения в ImageList
будут иметь одинаковые размеры.
Если бы это был я, я избавил бы себя от проблем и просто сохранил бы индекс изображения в ImageList
, который я присвоил PictureBox
где-то в переменной уровня класса ...
Если вы все еще решительны, несмотря на мои предупреждения, см. Ответы на этот похожий вопрос .