【问题标题】:How to add Transparent to ColorDialog in C#如何在 C# 中将透明添加到 ColorDialog
【发布时间】:2014-10-03 23:05:30
【问题描述】:

我想将透明颜色添加到我的 ColorDialog。

我试过这段代码:

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

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

【问题讨论】:

  • 你在用winforms吗?
  • 是的,它的winform @karthick
  • IMO 您需要创建自定义控件。

标签: c# transparent colordialog


【解决方案1】:

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

一种常见的解决方法是在您的样本控件后面放置一个棋盘图案,这样当 alpha 减小时,棋盘格就会显示出来。否则,你还怎么展示不可见的东西?

【讨论】:

  • 这是我所有的代码,实际上在我的项目中我想将颜色保存到我的数据库中,用户应该可以选择“透明”。我不知道如何通过 ColorDialog 做到这一点......
  • 是的,没有任何相关的代码。我只想将所选颜色添加到数据库
  • 不确定您的意思 - 您是否创建了一个自定义控件来充当您的颜色对话框?如果没有,请创建一个 - 您可以表示透明,但您认为合适。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多