c# - .net 中的透明用户控制

标签 c# .net vb.net winforms user-controls

我正在尝试制作一个带有用户控件的网页样式按钮。我需要使用户控件的背景透明。如何在不使控件不可见的情况下执行此操作。我还需要透明的 Label 和 PictureBox。

试图做这样的事情:alt text

this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;

最佳答案

您列出的所有三个控件都已启用 ControlStyles.SupportsTransparentBackColor 样式。只需在设计器的 Web 选项卡中设置 BackColor 属性。 非常不清楚为什么这对您来说不够好。

否则这是一种错觉,Windows 窗体通过要求父控件在 OnPaintBackground() 方法中绘制自身来实现它,以便它提供背景像素。一件值得注意的不起作用的事情是重叠控件。您只能看到父级像素,而看不到重叠控件的像素。这是可以修复的,但代码很糟糕。

唯一的其他透明度选项是 Form.TransparencyKey。这是真正的透明度,通过在视频适配器中使用覆盖来实现。问题是这只适用于顶层窗口。窗体,而不是控件。

这些限制是 Windows 窗体呈现模型中固有的,对控件使用单独的窗口。 Web 浏览器没有相同的限制,它通过绘制控件来模拟控件。油漆层,通过不绘画使透明度变得微不足道。 WPF 也使用该呈现模型。

关于c# - .net 中的透明用户控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117356/

相关文章:

c# - 带有嵌套选择查询的 OrmLite

vb.net - 如何在 VB.Net 中向 DataGridView 添加记录?

vb.net - VB递归Lambda Sub无法编译

c# - 给定点的样条法线

c# - 错误的图片路径保存在sql中

c# - Quartz.Net 依赖注入(inject) .Net Core

c# - 解密 cookie 会将其转换为本地时间吗?

.net - 使用 WIX 时删除单元测试 dll 文件

vb.net - 每种颜色的 25 种颜色渐变

c# - 如何使用 C# 驱动程序设置 MongoDB 的路径?