C++/CLI: ColorMatrix для применения альфа-порога

Кто-нибудь знает, как указать ColorMatrix (в частности, System::Drawing::Imaging::ColorMatrix в C++/CLI), чтобы установить альфа-порог? Например, если бы я использовал 10 (10/255) в качестве моего порога, то любой пиксель с альфа-каналом RGBA, равным 10 или менее, имел бы альфу 0,0f, а каждый пиксель выше получал бы 1,0f.

Я пытаюсь реализовать выбор ColorID в редакторе 2D-сцен, поскольку мне надоело использовать мой текущий громоздкий метод обращения моих преобразований чертежа, чтобы определить, на какой пиксель данного растрового изображения указывает мышь. Поэтому вместо этого я хочу сделать проход визуализации ColorID, как в OpenGL, как описано здесь http://content.gpwiki.org/index.php/OpenGL_Selection_Using_Unique_Color_IDs Однако я не могу просто сравнить расположение растровых изображений на экране, поскольку большинство из них включая тонны пустого пространства, которые я не хочу, чтобы их выбирали мышью, что оставляет меня в цвете.

На данный момент мой ColorMatrix выглядит

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 0
R G B 0 1

следующий ответ Ганса на GDI+: установить все пиксели на заданный цвет, сохраняя при этом существующее альфа-значение, но я бы хотел, чтобы он также применял порог к альфа-компоненту (при условии, что это даже возможно при использовании ColorMatrix)

1 ответ

Может быть, вы ищете ImageAttributes.SetThreshold метод.

Другие вопросы по тегам