【问题标题】:C# - How to Rretrieve Background Color of WindowC# - 如何检索窗口的背景颜色
【发布时间】:2011-11-24 09:25:00
【问题描述】:

我在这个论坛中进行了搜索,但没有找到任何可以帮助我解决以下问题的内容。如果可能,请提供帮助。谢谢。

我已将窗口的背景设置为黑色(或我喜欢的任何其他颜色)。作为应用程序完成计算的一部分,我在该窗口上绘制了不同颜色的区域。区域的颜色是动态的,我想在颜色更改之前找到并存储区域的起始颜色,以便我可以返回到该基色。例如,如果起始背景颜色是黑色,而应用程序将颜色更改为绿色,我想在需要时将颜色返回到基色黑色,而不必记住基色是黑色。

我尝试过使用

private Color backgroundColor = (Color)System.Drawing.SystemColors.Window;

然后是

BackColor = backgroundColor;

这确实有效,但颜色会变回白色,而不是我在偏好中指定的黑色。

任何人都可以提出解决方案吗?非常感谢您提供的任何帮助。

【问题讨论】:

    标签: c# background-color


    【解决方案1】:

    是的,SystemColors.Window 默认为白色。你可能想要这个:

    private Color backgroundColor;
    
    private void startPlotting()
    {
        backgroundColor = BackColor;
        BackColor = Color.Black;
        // etc..
    }
    
    private void restoreWindow()
    { 
        BackColor = backgroundColor;
    }
    

    【讨论】:

    • 你是对的。我试过 Color backgroundColor = BackColor;但我得到一个错误:非静态字段、方法或属性需要对象引用,我不知道如何修复它。
    • 这就是为什么我用实例方法而不是静态方法来编写它。
    • 我明白了。我的问题是这是一个更大的应用程序的一部分,用户可以在其中通过属性设置背景。所以所有子窗口的背景都是通过属性设置的,我想检索它并存储它,这样我就可以根据需要恢复它而无需方法。有没有办法做到这一点?背景颜色必须存储在某个地方,以便可以检索它。或者,我错了吗?
    • 你在谈论我看不到的代码。是的,我确定它存储在某个地方。
    • 我会看看是否可以找到存储通过属性设置的颜色信息的位置。谢谢。
    【解决方案2】:
    Color.FromArgb(System.Drawing.SystemColors.WindowFrame.ToArgb());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多