我如何使我的表格透明,但我画的不是?

esa*_*sac 12 c# wpf transparency winforms

我尝试将表单的不透明度设置为50%,然后在其上绘制一个字符串.似乎我在其上绘制的字符串也具有50%的不透明度.我如何绘制非透明字符串,但让表单背景显示50%?

如果可能的话,也愿意在WPF中这样做,但我需要明确的指示或示例项目,因为我以前从未这样做过.

为了澄清,我希望表单背景是一个黑色的80%不透明的底部,然后我想在它上面绘制文字等,让它看起来100%不透明.

Dre*_*rsh 19

这在WPF中非常容易完成:

  1. 在窗口上设置WindowStyle ="None"(注意:这是必需的,你不能有透明度和标准的windows chrome)
  2. 在窗口上设置AllowTransparency ="True"
  3. 使用具有透明度的画笔在窗口上设置背景,例如Background ="#AAFFFFFF"

这是一个快速示例:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Height="300" Width="300" AllowsTransparency="True" Background="#AAFFFFFF" WindowStyle="None">
<Grid>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" FontWeight="Bold">Hello World!</TextBlock>
</Grid>
Run Code Online (Sandbox Code Playgroud)

现在显然,由于您已禁用标准Windows镶边,因此您需要提供自己的按钮来关闭/最小化/最大化/拖动窗口.你可以自己很容易地做到这一点,或者你可以考虑购买像Blendables这样的东西,它带有你可以使用的"Chromeless Window"控件.