发布网友 发布时间:2024-10-22 18:38
共2个回答
热心网友 时间:2024-10-23 13:40
窗体的不透明度级别。默认值为 1.00。 备注此属性使您得以指定窗体及其控件的透明度级别。此属性与 TransparencyKey 提供的透明度不同,后者只能使窗体及其控件完全透明,条件是当窗体及其控件与 TransparencyKey 属性中指定的值所表示的颜色相同。当将此属性设置为小于 100% (1.00) 的值时,将使整个窗体(包括边框)更透明。将此属性设置为值 0% (0.00) 时,将使该窗体完全不可见。可以使用此属性提供不同级别的透明度,或者提供如窗体逐渐进入或退出视野这样的效果。例如,可以通过将 Opacity 属性设置为值 0% (0.00),并逐渐增加该值直到它到达 100% (1.00),来使某窗体逐渐进入视野。 Windows 2000, Windows Server 2003 系列平台说明: 此属性在无法显示分层窗口的平台上不起作用。 示例[Visual Basic, C#] 下面的示例演示如何创建以 75%不透明度显示的窗体。该代码示例创建一个新窗体,该窗体位于屏幕的中央,其 Opacity 属性被设置为更改窗体的不透明度。该代码示例还设置 Size 属性来提供大于默认窗体大小的窗体。该示例假定在该示例中定义的方法是从事件处理程序的另一个窗体或其他方法中调用。 [C#] private void CreateMyOpaqueForm() { // Create a new form. Form form2 = new Form(); // Set the text displayed in the caption. form2.Text = "My Form"; // Set the opacity to 75%. form2.Opacity = .75; // Size the form to be 300 pixels in height and width. form2.Size = new Size(300,300); // Display the form in the center of the screen. form2.StartPosition = FormStartPosition.CenterScreen; // Display the form as a modal dialog box. form2.ShowDialog(); } 要求平台: Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列 这个知道了, 大家应该有所启发了。下面就从劣到优,逐渐改进我们的想法。方法一:延时一段时间,逐渐改变窗体的Opacity值。关于延时,我们可以使用空循环或者主线程Sleep实现(经试验,两者表现的结果类似)我这里用后者来实现。名字空间要加上 using System.Threading;private void Form1_Load(object sender, EventArgs e) { this.Opacity = 0.0; } private void Form1_Shown(object sender, EventArgs e) { while (this.Opacity < 1.0) { Thread.Sleep(100); this.Opacity += 0.05; } } 在Load事件里面为Opacity赋值0.0,这样窗口初始时为完全透明,后面在窗口第一次显示的时候进行Opacity的改变, 让主线程每次睡上100ms,透明度以0.05步进。(注意代码所放的函数, 不要放错了,否则达不到渐显的效果),同样要达到淡出, 我们只要在Closing动作的时候加上透明度减小就可以了。private void Form1_FormClosing(object sender, FormClosingEventArgs e) { while (this.Opacity > 0.0) { Thread.Sleep(100); this.Opacity -= 0.05; } } 注:这个淡出的时候会有点黑色。 上面的方法在窗口启动时, 光标会变成等待状, 很不雅观,因此有下面的方法了。 方法二: 有了上面的想法之后, 当然会想起来用时钟控件了啊。 说做就做。 把timer的Interval设置为100(默认就是100) 然后在FormLoad的时候把timer1的Enabled设置为true(初始时为false) private void timer1_Tick(object sender, EventArgs e) { if (this.Opacity < 1.0) { this.Opacity += 0.05; } else { timer1.Enabled = false; } } 这样就不会有等待光标了。热心网友 时间:2024-10-23 13:39
在主窗体Form1调用子窗体Form2:
private void button1_Click(object sender, EventArgs e)Form2渐显出来:
Timer tmr;望采纳!