Как добавить прозрачный в ColorDialog в C#

Я хочу добавить прозрачный цвет в мой ColorDialog.

Я попробовал этот код:

MyDialog.CustomColors = new int[] { Color.Transparent.ToArgb() };    
MyDialog.ShowDialog();    
string hex = ColorTranslator.ToHtml(MyDialog.Color);    
MessageBox.Show(hex);

Но когда я выбираю свой пользовательский цвет (я имею в виду прозрачный), в блоке сообщений отображается "белый" вместо "прозрачный". преобразовать в самого белого. Но я хочу выбрать прозрачный. Как я могу это сделать?

2 ответа

Я предполагаю, что это показывает цвет позади. Пожалуйста, оставьте свой контрольный XAML, чтобы быть уверенным.

Обычный обходной путь к этому - поместить шаблон шахматной доски за свой элемент управления Swatch, чтобы при уменьшении альфа проверка проходила. В противном случае, как еще вы показываете то, что не имеет видимости?

Свойство CustomColors принимает цвета в Int32, состоящем из BGR (синий, зеленый, красный), и вы передаете ему представление ARGB прозрачного цвета. A в ARGB контролирует альфа-канал и прозрачность. Я бы поставил флажок в форме, чтобы пользователь мог указать прозрачность цвета. В противном случае вы можете отобразить свой белый цвет в диалоговом окне с прозрачным выделением.

If (dlgCol.Color.ToArgb() == Color.White.ToArgb() )
 {
        btnColor.BackColor = Color.Transparent;

 }

http://en.wikipedia.org/wiki/RGBA_color_space

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