Я тоже столкнулся с этой проблемой, и было бы неплохо, если бы кто-нибудь знал об исправлении. Я прибегал к уродливым временным решениям, таким как:
float[][] matrixContrastFix =
{
new float[] { 1, 0, 0, 0, 0},
new float[] { 0, 1, 0, 0, 0},
new float[] { 0, 0, 1, 0, 0},
new float[] { 0, 0, 0, 1, 0},
new float[] {-.05f, -.05f, -.05f, 0, 1}
};
(Я умножаю множество ColorMatrixes вместе и в итоге получаю эти вещи.)
Но, как я полагаю, вы подразумеваете под другими методами , что использование .LockBits и выполнение этого самостоятельно, вероятно, будет работать лучше.
Надеюсь, вы получите лучший ответ, чем мой!