【发布时间】:2011-10-25 08:17:10
【问题描述】:
有没有办法获取控件的形状并将其转换为Geometry 对象?
我有以下情况:在 WPF 应用程序中将显示一个弹出窗口。这个弹出窗口没有窗口,它是一个控件,它将变得可见。应用程序的其余部分会变暗,因为灰色层位于应用程序上方。
现在的问题是这个灰色层也在弹出窗口本身的上方,这是由应用程序的设计造成的,加上被点击并打开弹出窗口的元素也不应该被该层隐藏。我决定在灰色层上附加一个剪裁几何,这很好,但我必须检测所有我不想自己隐藏的形式和路径。
回到我的问题:有没有办法获得控件的形状并将其转换为Geometry 对象?例如。我找到了获取控件的 VisualBrush 的方法,但也无法转换它 - 或者只是看不到它是如何实现的。
【问题讨论】:
-
您是否尝试从弹出窗口中创建一个切口,以便灰色层不会覆盖它?如果是这样,您可以使用 Z-Order 控制组件的显示顺序:blogs.msdn.com/b/wpfsdk/archive/2006/06/13/…
-
我会选择 Adorner/AdornerLayer 或 Popup 控件。这两个元素都旨在在其他控件之上显示信息,并且应该满足您在视觉内容上方显示弹出窗口而不剪切任何内容的需求。见msdn.microsoft.com/en-us/library/ms749018.aspx 和msdn.microsoft.com/en-us/library/ms747117.aspx
-
你们俩都是对的,对于弹出窗口,使用 Z-Index 或已经满足我需要的控件会容易得多。我将尝试使用其中一种可能性。但是源代码控制呢?被点击的按钮也不应该被弹出覆盖覆盖。
-
我真的很想直接回答 OP 的问题。你能从 UIElement 中获取几何图形吗?