Что эквивалентно свойству MaskColor VB6.0 в C#

Свойство MaskColor в VB 6.0 используется для удаления цвета фона Image. Как я могу сделать то же самое на С#?


person Dev    schedule 20.08.2011    source источник
comment
Ссылка на документы VB6 для полноты. msdn.microsoft.com/en-us/library /aa239018(v=vs.60).aspx   -  person MarkJ    schedule 24.02.2012


Ответы (2)


Вы можете использовать MakeTransparent(Color color) для растрового изображения. пример:

//convert the red color in the image into transparent.
((Bitmap)BackgroundImage).MakeTransparent(Color.Red);
person Jalal Said    schedule 20.08.2011
comment
Я думал, что для этого требуется, чтобы нижний левый пиксель был цветом, на который вы нацеливались. Мне нравится, когда я узнаю что-то новое здесь! - person Nathan Ratcliff; 20.08.2011
comment
@Dev Добро пожаловать, не забудьте пометить этот ответ как принятый ответ, если он правильно отвечает на ваш вопрос, чтобы другие знали, как на самом деле была решена ваша проблема - person Jalal Said; 20.08.2011

Я не думаю, что есть прямой аналог.

В прошлом я заставлял это работать, используя класс ColorMap для сопоставления цвета моего фона с Color.Transparent. Затем я создаю объект ImageAttributes, вызываю функцию SetRemapTable() и передаю ей свой ColorMap. Затем вы перерисовываете изображение, передавая ImageAttributes методу DrawImage.

Редактировать:

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

person Nathan Ratcliff    schedule 20.08.2011
comment
Вау, это очень длинный ход ;) - person Jalal Said; 20.08.2011
comment
Прошло несколько лет, но я вспомнил, как делал это, и код до сих пор у меня. Оказывается, я сопоставлял более одного оттенка цвета с прозрачным. Ваш способ явно лучше для одного сплошного цвета. - person Nathan Ratcliff; 20.08.2011
comment
+1, хотя это полезно, я не знаю о производительности здесь, но вы можете вызывать метод MakeTrasparent несколько раз для каждого цвета, который вы хотите сделать прозрачным в одном и том же растровом изображении - person Jalal Said; 20.08.2011
comment
Было бы интересно посмотреть, что делает MakeTransparent. Я могу изучить это, когда завтра проснусь :) - person Nathan Ratcliff; 20.08.2011