Как нарисовать изображение с более мягкой цветовой гаммой? - PullRequest
1 голос
/ 30 января 2012

Я реализовал пользовательский TreeListView для .NET и хочу добавить Ctrl+X / Ctrl+V функциональность.

Я хочу, чтобы, когда пользователь вырезал узел, изображение узла отображалось мягче, чем обычно, так какПроводник Windows делает:

enter image description here

Кто-нибудь может объяснить, как это сделать с System.Drawing.Image в C #?Я использую Graphics.DrawImage для рисования изображений, поэтому мне нужна функция для преобразования иконки.

Есть ли встроенный алгоритм для этого?Любой пример?

Ответы [ 4 ]

3 голосов
/ 30 января 2012

Вы можете нарисовать белый прямоугольник сверху, который частично прозрачен. Проще, чем пересчитать все пиксели.

3 голосов
/ 30 января 2012

Вместо того, чтобы менять цвет изображения, я бы просто сделал изображение более прозрачным. Вы можете использовать ColorMatrix , как упомянуто в других ответах, с матрицей, которая делает альфа-канал 50% или около того.

float[][] colorMatrixElements = { 
   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, 0.5f, 0},        // alpha scaling factor of 50%
   new float[] {0, 0, 0, 0, 1}};

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
0 голосов
/ 30 января 2012

См. Класс ColorMatrix для примеров, а также страницу Перекрашивание изображений , на которую можно перейти по ссылке.Вы сможете найти больше информации в поиске ColorMatrix как здесь, так и во всех интернетах.

Обратите внимание, что класс ColorMatrix работает в пространстве RGBA, поэтому выполняет преобразования цветов для регулировки яркости инасыщенность не так проста.Зачастую такие вещи проще делать в пространстве HSV.В пространстве RGBA вам лучше всего просто настроить альфа-канал (A) так, чтобы цвета выглядели блеклыми.

Если у вас есть только небольшой конечный набор значков, то зачастую проще просто сделать вручнуювторой набор цветных иконок с использованием вашего любимого клона Photoshop.

0 голосов
/ 30 января 2012

Изменение яркости изображения.

Я нашел несколько ссылок здесь и здесь .


Но на вашем месте,Я бы упростил его и просто использовал другое изображение, которое я изменил извне, вместо того, чтобы делать это программно.

...