【发布时间】:2014-08-05 22:29:35
【问题描述】:
我有一个画布,它由 WPF/XAML 中的不同用户控件组成。在其中一个控件中,我有一个必须透明的区域,以便它后面的元素可见。但是,由于该控件的复杂结构,我不能只将背景设置为透明或任何内容,因为该用户控件中有另一个元素可以说在它后面移动并且不能透明。所以我想要一个看起来透明的区域,即使它背后还有其他东西。
我唯一能想到的就是使用 VisualBrush 并将画布的那个区域准确地显示在必须看起来像透明的区域的顶部。我想在 WPF 而不是 XAML 中执行此操作,因为我需要完全调整视图框,以便内容正是该部分背后的内容。但是,这似乎根本不起作用。这是 WPF 代码:
Rectangle rect = new Rectangle();
rect.HorizontalAlignment = HorizontalAlignment.Stretch;
rect.VerticalAlignment = VerticalAlignment.Stretch;
VisualBrush VisualBrush1 = new VisualBrush();
VisualBrush1.Visual = MainCanvas;
VisualBrush1.Stretch = Stretch.None;
rect.Fill = VisualBrush1;
RectTest.Child = rect;
BorderTest 是我在 xaml 代码中定义的必须透明的边框(它具有一定的宽度和高度)。我还没有设置视图框属性,因为这已经不起作用了。我期待画布的至少一部分已经显示在我的“borderTest”中...... 有人知道我的问题,或者可以指出一些他们做类似事情的代码?我已经在互联网上找到了很多,但我无法让这个东西工作。
【问题讨论】:
-
这仅在 UserControl 本身不是 Canvas 的子项时才有效。
-
好吧,这可能是问题所在,因为它是 Canvas 的子项。这背后的原因是什么(它不能是画布的孩子)?还有其他方法吗?
标签: c# wpf visualbrush