为什么可以';t我在XAML中定义了一个带有变换的几何体

本文关键字:一个 几何体 变换 定义 XAML 我在 为什么 | 更新日期: 2023-09-27 18:26:37

我正在尝试创建一个ResourceDictionaryála这个答案,它包含设置了TransformsStreamGeometries

<ResourceDictionary>
    <StreamGeometry x:Name="Chevrons">
        <StreamGeometry.Transform>
            <TranslateTransform X="20" Y="120"/>
        </StreamGeometry.Transform>
        M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 17 [...]
    </StreamGeometry>
</ResourceDictionary>

然而,我得到以下错误:

1:无法向"StreamGeometry"类型的对象添加内容。

2:处理初始化字符串"{PathData}"时遇到TypeConverter语法错误。在通过TypeConverter创建的对象上不允许使用元素属性。

所以我用PathGeometry尝试了一下,得到了这个错误:

无法将指定的值分配给集合。应为以下类型:"PathFigure"。

有什么方法可以在XAML代码中对几何体应用转换吗?还是我必须通过代码来完成?

为什么可以';t我在XAML中定义了一个带有变换的几何体

您可以这样写:

<PathGeometry x:Key="Chevrons">
    <PathGeometry.Transform>
        <TranslateTransform X="20" Y="120"/>
    </PathGeometry.Transform>
    <PathGeometry.Figures>
        M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 ...
    </PathGeometry.Figures>
</PathGeometry>

或者像这样:

<PathGeometry x:Key="Chevrons"
    Figures="M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 ...">
    <PathGeometry.Transform>
        <TranslateTransform X="20" Y="120"/>
    </PathGeometry.Transform>
</PathGeometry>

关于StreamGeometry的行为,引用MSDN:

此处:

StreamGeometry是一种可冻结的类型。StreamGeometry是PathGeometry的轻量级替代品,用于创建几何形状。当您需要描述复杂的几何体,但又不需要支持数据绑定、动画或修改的开销时,请使用StreamGeometry。由于其效率,StreamGeometry类是描述装饰器的好选择。

这里:

如果StreamGeometry包含Transform或任何未笔划或未填充的分段,则无法对其进行序列化。

因此,按照Clemens的建议,使用PathGeomerty

相关文章: