【问题标题】:C# Form gradual fadeC# 窗体渐变
【发布时间】:2017-09-19 02:51:47
【问题描述】:

我想要做的就是显示具有 100 不透明度的表单,然后在 X 时间后它开始褪色直到 0.0 不透明度,我有算法但我不知道在哪里实现它,就好像我在 Form_Load 中使用它一样表单已经显示为最终的不透明度,以及 InitializeComponent();

this.Opacity = 1.0;

for (float i = 1.0f; i >= 0.0f; i -= 0.1f)
{
    this.Opacity = i;
    Thread.Sleep(150);
}

【问题讨论】:

  • 考虑改用 WPF; WinForms 并不是真正为这类事情而设计的......
  • 我会避免睡觉。
  • 睡觉只是我在做功能之前试图让表单显示
  • 而且它与表单消失的速度有直接关系,但它会冻结 UI 线程,直到它完成......

标签: c# winforms opacity


【解决方案1】:

使用Shown Event,它仅在表单加载后发生一次,或者,如果您希望每次表单获得焦点时发生一次,请使用Activated Event

在 Form1.cs 中:

private void Form1_Shown(object sender, EventArgs e)
{
    this.Opacity = 1.0;

    for (float i = 1.0f; i >= 0.0f; i -= 0.1f)
    {
        this.Opacity = i;
        Thread.Sleep(150);
    }
}

在 Form1.Designer.cs 中:

this.Shown += new System.EventHandler(this.Form1_Shown);

如果您想让表单不可见但控件保持可见,您可以使用TransparencyKey 属性:

private void Form1_Shown(object sender, EventArgs e)
{
    // Choose some obscure background that no other controls will have
    this.BackColor = Color.Red;
    this.TransparencyKey = this.BackColor;
}

【讨论】:

  • 由于某种奇怪的原因,当它淡出时,文本有一个透明的背景,就像我可以透过图像看到的那样,根本没有文字
  • 这就是不透明度的作用......你想让它做什么?
  • 我更新了一个使表单透明但控件不透明的示例。不确定是否有办法逐步做到这一点,但......
猜你喜欢
  • 1970-01-01
  • 2012-06-25
  • 2019-07-13
  • 2012-04-21
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
相关资源
最近更新 更多