Как добавить прозрачный в 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;
}