我将在这里失去理智。
为什么复选框控件不将其背后的内容融合在一起?
该问题适用于所有Winforms控件,但我以此为例。

一张图片胜过千言万语:

alt text

还有一些单词:
背后是什么 CheckBox 是彩色的 PictureBoxes和a Button.
CheckBox' BackColor 设定为 Transparent. 。但是以某种方式决定这意味着它应该分享 BackColor 包含 Form (这是透明度幻想的想法吗?)。

这在Winforms中不可能吗?我可以发誓我以前这样做了。

更新:
我只是尝试了:
在该表单上,设置 CheckBox' BackColorTransparent, ,然后更改 BackColor 包含 Form 还有其他颜色, CheckBox 会匹配的 BackColor. 。什么.......?

有帮助吗?

解决方案

鲍勃·鲍威尔(Bob Powell)写了 优秀的 有关透明控制的文章。看看这个:

http://www.bobpowell.net/transcontrols.htm

其他提示

这是控件是Windows Windows的副作用。一个窗口负责绘制自身,OnPaintbackground和OnPaint方法来处理这一点。

这种渲染模型不能很好地支持透明度。通过使用分层窗口来支持真正的透明度。这是由视频适配器实现的,Windows使用了IT硬件覆盖功能。但这仅适用于高级窗户,而不是儿童窗户。注意表单。

通过技巧有部分支持透明度。控件可以通过要求父窗口首先在控制窗口内绘制自身来伪造它。产生背景像素,然后可以在其中绘制。将背色属性设置为color.Transparent可以为支持此功能的控件提供此技巧。所有的按钮式派生类都可以。但是,不是对本机Windows控件的包装器的控件。

“问父窗口”是此技巧中的缺陷在您的屏幕截图中可见的位置。您正在看到形式像素。堆叠效果不起作用,它从不考虑Z订单中的任何中间窗口,而只能是父级。这是可以解决的,但是 非常 丑陋,有一篇KB文章显示代码。

同样值得注意的是,WPF没有这种限制。控件不是窗户,它们是通过在父母顶部绘画来渲染的。油漆层。透明度现在是微不足道的,只是不要绘画。

您可以手动将复选框的后色设置为所需的颜色吗? (其背后的图片框中的值)

“透明”可能意味着与您想要的MS不同。

另外,尝试更改图片框的Zorder(将其放在前面),看看是否更改了复选框的基础颜色。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top