更改 .NET 中单个表单控件的不透明度

Posted

技术标签:

【中文标题】更改 .NET 中单个表单控件的不透明度【英文标题】:Changing the opacity of individual form controls in .NET 【发布时间】:2011-03-27 18:18:21 【问题描述】:

好的,所以我要做的是让两个图像框重叠,以便我可以对齐其中的图像(基于用户输入)。问题是我不确定是否可以调整单个控件的不透明度,所以我只能看到最顶层的控件。当然,我可以进行图像处理并将两个图像组合成一个图像(使用适当的透明度设置),但是在每个输入操作上这样做会有点贵,所以我认为在 UI 线程上这样做会便宜很多。

有什么建议吗?提前谢谢你。

【问题讨论】:

我很确定您可以在 WPF 的控制级别而不是在 WinForms 中实现透明度 - 我很想听听其他人的意见。 【参考方案1】:

这在 WinForms 中是不可能的,透明效果不适用于重叠控件。您可以做的最好的事情是重叠表单,这样您就可以使用 Opacity 和 TransparencyKey 属性。

更实用的方法是使用 one PictureBox,您可以在其中显示合成图像。使用 ColorMatrix 类很容易创建这样的图像。您可以在我的回答中找到示例代码 this thread。

【讨论】:

【参考方案2】:

正如@Kane 所说,wpf 可能更适合这个。 只有Form 控件支持Opacity 作为winforms 中的属性(see msdn),但是如果您将图像放在子表单中,您可能会逃脱它(我真的在这里推测,没有' t 试过这个。)并玩弄它们的不透明度。

祝你好运

【讨论】:

以上是关于更改 .NET 中单个表单控件的不透明度的主要内容,如果未能解决你的问题,请参考以下文章

打开表单时更改窗口不透明度

表单之间的交互——如何将一个表单的控件从另一个表单更改?

更改应用程序中所有控件的字体大小(win 表单)

如何同时为单个表单上的两个不同控件设置两种不同的文化?

如何使用 vb.net 从 MS Access DB 表单中找出 Activex 控件

检测对表单控件中文本的所有更改(由用户进行)