【问题标题】:Changing opacity in form with trackbar in C# don't works, why?在 C# 中使用 trackbar 更改表单的不透明度不起作用,为什么?
【发布时间】:2013-08-22 23:33:52
【问题描述】:

我(为了好玩)在C# 中创建了一个表格,并带有trackbar。 我想用它更改表单的Opacity,所以我写了这个:

private void trackBar1_Scroll(object sender, EventArgs e)
{
    progressBar1.Value = trackBar1.Value;
    System.Windows.Forms.Form.ActiveForm.Opacity = trackBar1.Value;
    label2.Text = trackBar1.Value.ToString();
}

当我启动程序时,如果trackbar 的值在 1 到 100 之间,则不透明度将为 100%,如果我将 trackbar 拖到 0,则表格变得完全透明。

当一个表单启动时,你只能得到 100% Opacity 或 0% Opacity,还是我想要的也是可能的?

【问题讨论】:

  • 我认为不透明度是一个介于 0 和 1 之间的值。

标签: c# forms opacity smooth trackbar


【解决方案1】:

private void trackBar1_Scroll(object sender, EventArgs e) { label1.Text =trackBar1.Value.ToString()+ "%";

        Opacity=trackBar1.Value / 100.00;
        
    }

【讨论】:

  • 对您的解决方案进行更多解释会很好,在这种情况下,这仅仅是因为不透明度是一个介于 0 和 1 之间的值。
【解决方案2】:

System.Windows.Forms.Form.Opacity 的值介于0.01.0 之间,要获得不透明度的百分比,可以将其与100 相乘,所以1 表示fully opaque0 表示@987654328 @。

对于trackbar,你应该把它的Value转换成0.01.0之间的对应值,所以你应该这样做:

yourForm.Opacity = (double)trackBar1.Value/trackBar1.Maximum;

【讨论】:

    【解决方案3】:

    使用这个:

    System.Windows.Forms.Form.ActiveForm.Opacity = ((double)(trackBar1.Value) /100.0)
    

    您可以有不同程度的不透明度。例如,0.5 将为您提供 50% 的不透明度。

    【讨论】:

      【解决方案4】:

      将数字除以 100。它应该是介于 0 和 1 之间的双精度数

      ((double)trackBar1.Value) / 100
      

      【讨论】:

      • 轻微修正:不透明度应该是double 而不是decimal。见:msdn.microsoft.com/en-us/library/…
      • 不能在0到100之间吗?还是只有“透明”或“不透明”
      • 介于 0 到 100 之间,只是一个百分比 - 25% = .25
      • 或者你的意思是System.Windows.Forms.Form.ActiveForm.Opacity = trackBar1.Value/100;?顺便说一句,这也行不通。
      • 那行应该和 AlexDev 的回答完全一样
      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 2019-09-19
      • 2013-01-06
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多