设置 WPF 标签内容 Alpha 透明度而不是整个控件不透明度
Set WPF Label Content Alpha Transparency instead of entire control Opacity
我正在尝试将标签的内容设置为不可见,以便我可以将其覆盖在后面的内容上。例如,控件的背景是纯色,但文本具有 alpha 透明度,可以让我看穿整个控件(就像 photoshop 技巧)。这样,可以看到具有可变背景的动态内容。我将此模式应用于 PNG 文件,但当内容需要更改时,显然不会这样做。这个问题的一个很好的例子(因为我不太擅长问)可以在这里找到......但是,当然,这是针对 css 的。 (How to make "see through" text?) 如有任何帮助,我们将不胜感激
所以我找到了解决这个问题的方法...
诀窍是使用 Clip 而不是 OpacityMask。
先看布局:
<Grid Background="Red">
<Border Background="White" Name="targetImage" VerticalAlignment="Center" Height="200"/>
<Button VerticalAlignment="Bottom" Content="render" Click="ButtonBase_OnClick"></Button>
</Grid>
这里红色背景的网格可以作为背景图片!
它里面的边框用白色覆盖它。
然后我放了一个按钮,在按下时从边框中删除我们想要的文本。
这里是按钮点击事件的代码:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Typeface face = new Typeface("Candara");
FormattedText tx = new FormattedText("Hello", Thread.CurrentThread.CurrentUICulture, FlowDirection.LeftToRight, face, 70, Brushes.Black);
Geometry textGeom = tx.BuildGeometry(new Point(0, 0));
Rect boundingRect = new Rect(new Point(-100000, -100000), new Point(100000, 100000));
RectangleGeometry boundingGeom = new RectangleGeometry(boundingRect);
GeometryGroup group = new GeometryGroup();
group.Children.Add(boundingGeom);
group.Children.Add(textGeom);
targetImage.Clip = group;
}
基本上是在创建文本!然后我们需要反转掩码。
反转是在 boundingRect 的帮助下完成的。
编辑:差点忘了。您可以将所有这些逻辑放在用户控件中。并且 运行 每次用户控件的文本 属性 发生变化时都使用此代码。
玩得开心;)
我正在尝试将标签的内容设置为不可见,以便我可以将其覆盖在后面的内容上。例如,控件的背景是纯色,但文本具有 alpha 透明度,可以让我看穿整个控件(就像 photoshop 技巧)。这样,可以看到具有可变背景的动态内容。我将此模式应用于 PNG 文件,但当内容需要更改时,显然不会这样做。这个问题的一个很好的例子(因为我不太擅长问)可以在这里找到......但是,当然,这是针对 css 的。 (How to make "see through" text?) 如有任何帮助,我们将不胜感激
所以我找到了解决这个问题的方法... 诀窍是使用 Clip 而不是 OpacityMask。
先看布局:
<Grid Background="Red">
<Border Background="White" Name="targetImage" VerticalAlignment="Center" Height="200"/>
<Button VerticalAlignment="Bottom" Content="render" Click="ButtonBase_OnClick"></Button>
</Grid>
这里红色背景的网格可以作为背景图片! 它里面的边框用白色覆盖它。 然后我放了一个按钮,在按下时从边框中删除我们想要的文本。
这里是按钮点击事件的代码:
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
Typeface face = new Typeface("Candara");
FormattedText tx = new FormattedText("Hello", Thread.CurrentThread.CurrentUICulture, FlowDirection.LeftToRight, face, 70, Brushes.Black);
Geometry textGeom = tx.BuildGeometry(new Point(0, 0));
Rect boundingRect = new Rect(new Point(-100000, -100000), new Point(100000, 100000));
RectangleGeometry boundingGeom = new RectangleGeometry(boundingRect);
GeometryGroup group = new GeometryGroup();
group.Children.Add(boundingGeom);
group.Children.Add(textGeom);
targetImage.Clip = group;
}
基本上是在创建文本!然后我们需要反转掩码。 反转是在 boundingRect 的帮助下完成的。
编辑:差点忘了。您可以将所有这些逻辑放在用户控件中。并且 运行 每次用户控件的文本 属性 发生变化时都使用此代码。
玩得开心;)