如何在XamlCompositionBrushBase中检索父视觉大小?

时间:2018-02-18 23:27:40

标签: uwp winrt-xaml windows-composition-api xaml-composition

我正在创建一个继承自XamlCompositionBrushBase的类,并希望知道刷子在OnConnected中连接时附加的视觉的渲染大小。< / p>

我需要这些信息在我的合成中创建一个与我的视觉大小相同的表面,以便不仅具有正确的像素密度,而且还可以从视觉坐标映射到表面的空间。

  

即。如果我有一个坐标 50,75 ,我需要知道视觉的宽度/高度,以便将表面位置映射到视觉上的那个位置。

由于画笔是一个依赖项对象,我尝试使用var parent = VisualTreeHelper.GetParent(this);但是引发了异常:

  

发生System.Exception HResult = 0x8000FFFF
  消息=灾难性故障(HRESULT异常:0x8000FFFF   (E_UNEXPECTED))
  源=

如果不在父UIElement上使用附加属性,是否可以这样做?

由于

1 个答案:

答案 0 :(得分:0)

你不能 - 因为画笔可以同时连接到多个视觉效果,实际上并不存在“大小”的概念。好吧,不管怎样,不是在UWP的XAML顶层。

由于画笔可以在资源词典中使用,因此可以在多个地方以相同的实例应用,每个地方都有不同的视觉尺寸,你真的不想破解你的方式,因为你几乎肯定会破坏任何用法资源词典中的画笔。

(是的,令人沮丧。)