如何在C#中向ColorDialog添加透明

时间:2014-08-11 07:26:04

标签: c# transparent colordialog

我想为ColorDialog添加透明色。

我试过这段代码:

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

但是,当我选择自定义颜色(我的意思是透明)时,messageBox会显示“白色”而不是“透明”。转换为白色本身。但我想选择透明。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

我的猜测是它显示了背后的颜色。请发布您的控件XAML以确定。

一个常见的解决方法是在你的样本控件后面放置一个棋盘图案,这样当alpha减少时,检查器会显示出来。否则,你怎么表现出一些没有可见性的东西?

答案 1 :(得分:0)

CustomColors属性接受由BGR(蓝色,绿色,红色)组成的Int32中的颜色,并且您传递的是透明颜色的ARGB表示。 ARGB中的A控制alpha通道和透明度。我会在表单上放置一个复选框,供用户指定颜色透明度。否则,您可以将颜色对话框中的白色映射到透明选择。

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

 }

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