gpt4 book ai didi

C# 调暗屏幕、多个 Windows 窗体的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 17:16:14 26 4
gpt4 key购买 nike

因此,我编写了代码以从父级创建一个新的 Windows 窗体,该窗体是全屏、黑色和 80% 的不透明度以创建调光效果。

然后在此上方显示另一个表单以显示进度。

代码目前看起来像这样:

    this.Enabled = false;

frmDimScreen.BackColor = Color.Black;
frmDimScreen.Opacity = .8;
frmDimScreen.FormBorderStyle = FormBorderStyle.None;
frmDimScreen.Size = new Size(splitContainerMain.Width - 4, splitContainerMain.Height - 2);
frmDimScreen.StartPosition = FormStartPosition.Manual;
frmDimScreen.ShowIcon = false;
frmDimScreen.ShowInTaskbar = false;
frmDimScreen.Show();
frmDimScreen.Location = new Point(splitContainerMain.Location.X + 2, ((splitContainerMain.Location.Y + tsMainTools.Height) - 4));

addImgIL.ShowIcon = false;
addImgIL.ShowInTaskbar = false;
addImgIL.TopMost = true;
addImgIL.Show();
addImgIL.Location = new Point((this.Width - addImgIL.Width) / 2, (this.Height - addImgIL.Height) / 2);
addImgIL.BringToFront();

很明显,我对此提出质疑的主要原因是,如果父窗口失去焦点,那么子窗体就会乱序并且分层不正确。我知道我可以通过 OnPaint 处理这个问题,但正在寻找最佳解决方案。

问题/问题,这是实现我正在尝试的目标的最佳方法吗?我应该使用表格还是图形来创建调光?每个人对此有何经验?

提前致谢!

最佳答案

另一种仅使用单个窗口的方法是使用 alpha 混合图像绘制透明的深色背景(您甚至可以使用渐变)和非透明的自定义绘制进度条。参见 http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx .

在该项目中,您可以找到一个类,您可以使用该类轻松地将 alpha 混合位图分配给表单的背景。这种方法的问题是您必须自定义绘制表单上的所有内容,包括进度条或您需要的任何其他控件。

您尝试实现的效果对于 Windows 应用程序来说有点不寻常,这就是为什么最好的方法不是很简单。

关于C# 调暗屏幕、多个 Windows 窗体的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com