Вы имеете в виду, что вы хотите преобразовать каждый существующий цвет в растровом изображении в один однородный цвет, полностью сохраняя при этом информацию альфа / прозрачности, представленную на изображении?
Если это так, просто используйте следующую цветовую матрицу:
imageAttributes.SetColorMatrix( new ColorMatrix( new float[][] {
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {r, g, b, 0, 1}} ) );
где r, g, b находятся в диапазоне от 0 до 1, например:
float r = DesiredColor.R / 255f;
float g = DesiredColor.G / 255f;
float B = DesiredColor.B / 255f;
Я не понимаю, что вы подразумеваете под "было бы плюсом, если для прозрачности может быть пороговое значение", хотя ... так что, возможно, это не тот ответ, который вы искали?