вы находитесь в правильном направлении, единственная проблема заключается в том, что вы изменяете свойство display
вместо opacity
.
Когда вы применяете transition
к элементу по свойству непрозрачности - элемент должен появиться с opacity: 0
, а затем непрозрачность должна быть изменена на opacity: 0.7
. В таком случае вы увидите эффект затемнения.
Вот кодовая песочница, которая демонстрирует этот сценарий. https://codesandbox.io/s/wnrokmvw55
Реальный вопрос, какие различия Вы хотите показать? Если просто необходимо воздействовать на значения цвета RGB, лучший выбор, по-моему, состоит в том, чтобы просто просканировать через оба битовых массива и сравнить использование Значений цвета GetPixel и использовать SetPixel для генерации битового массива 'различия'. Возможно, Вы просто хотите вычесть значения и использовать значения как новое Значение цвета для третьего битового массива. Или возможно Вы хотите вычислить яркость и использование это. Еще лучше, если Вы имеете три метрики для сравнения, присваиваете каждого R G и компонентам B цвета. Я использовал этот подход для фрактальной колоризации прежде.
Существуют другие подходы, но с этим Вы ограничены только своим воображением. Это не может быть самый быстрый подход, но это не кажется, что производительность необходима для этого сценария.
Это может быть сделано PInvoking API-функция BitBlt. Вот некоторый пример кода:
http://www.codeproject.com/KB/GDI-plus/Bitblt_wrapper_class.aspx
Образец использует растровый код операции SRCCOPY; для получения различий между двумя битовыми массивами Вы вместо этого хотели бы использовать SRCPAINT, или что-то (Google должен дать список кодов).
GetPixel и SetPixel (на Растровом классе) являются невероятно медленными. Используя LockBits будет намного быстрее, но необходимо будет все еще написать собственный код.
Обновление: это - лучшая ссылка:
http://www.pinvoke.net/default.aspx/gdi32.BitBlt
и включает все возможные троичные растровые операции (SRCPAINT, или SRCAND, вероятно, что Вы ищете.).
Проверьте этот проект. Это - детектор движения, сделанный Andrew Kirillov. Он реализует несколько фильтров, чтобы заставить различия между двумя изображениями и использованием это вычислять перемещения. Это действительно хорошо сделанный и его легкое, чтобы изменить и использовать в Вашем собственном приложении.
http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx
Во-первых, определите, вычитают;-p, На что Вы хотите, чтобы ответ был похож?
Большая часть производительности способ сделать это, вероятно, LockBits
- это должно быть намного более быстро, чем много из GetPixel
вызовы, но необходимо будет декодировать байты сами. Легкий, если это - просто что-то как ARGB на 32 бит/пкс, но коварный для некоторых более сложных случаев.
Я считал где-нибудь, что язык, используемый в Adobe Pixel Bender, вдохновлен чем-то, что однажды сделала Microsoft. Не помните, где я считал его. Мои взгляды состоят в том, что, возможно, что Microsoft "что-то" перенесено во что-то, что может использовать проект .NET. Излишество для того, чтобы просто вычесть два изображения, но так или иначе.