3

我正在尝试创建一个包含已设置的答案ResourceDictionaryStreamGeometriesTransforms

<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 创建的对象不允许使用元素属性。

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

无法将指定的值分配给集合。预期以下类型:“PathFigure”。

有没有办法在 XAML 代码中对几何图形应用转换?还是我只需要通过代码来完成?

4

2 回答 2

7

你可以这样写:

<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>
于 2013-08-05T11:48:33.730 回答
3

关于 的行为StreamGeometry,引用自MSDN

这里:

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

和这里:

如果 StreamGeometry 包含 Transform 或任何未描边或未填充的段,则无法序列化它。

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

于 2013-08-05T12:04:34.287 回答