Я создаю критически важное для производительности приложение, которое реализует манипулирование изображениями. Я использую некоторые указатели пикселей, используя свою структуру с именем Pixel
для некоторой обработки. У меня есть много частей кода, которые перебирают все данные растрового изображения, и ради возможности повторного использования кода и модульности я разрабатываю метод, который будет выполнять действие и применять его ко всем пикселям изображения (например, карта функция). Однако, когда я пишу Action<Pixel*>
, Visual Studio жалуется на код, в котором говорится, что тип Pixel*
нельзя использовать в качестве аргумента типа. Весь класс находится в контексте unsafe
, и я везде использую указатели Pixel
, но я просто не могу использовать пиксельный указатель в качестве класса шаблона Action.
Я могу использовать Action<IntPtr>
, но мне нужно будет преобразовать его в соответствующие указатели внутри тела метода на КАЖДОЙ итерации, что убьет всю идею «критичности к производительности».
Pixel
, который являетсяstruct
- person Can Poyrazoğlu   schedule 13.08.2011GetPixel
иSetPixel
методаBitmap
, и это НАМНОГО быстрее (без делегатов). Но я использую почти один и тот же код снова и снова, где, помимо скучного копирования/вставки/изменения некоторых битов, он также очень подвержен опечаткам/логическим ошибкам. Что общего во ВСЕХ из них, так это то, что я блокирую растровое изображение и что-то делаю с каждым пикселем, перебирая пиксели с помощью указателей, а затем разблокирую изображение. Мне нужно несколько способов передать эту операцию, которую я применяю к каждому отдельному пикселю, и это заметно сделает меня более продуктивным. - person Can Poyrazoğlu   schedule 13.08.2011