簡體   English   中英

為什么我不能在XAML中使用Transform定義幾何?

[英]Why can't I define a Geometry with a Transform in XAML?

我正在嘗試創建一個ResourceDictionary 這個答案包含具有Transforms集的StreamGeometries

<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代碼中將變換應用於幾何? 或者我只需要通過代碼來完成它?

你可以這樣寫:

<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是Freezable類型。 StreamGeometry是PathGeometry的輕量級替代品,用於創建幾何形狀。 當您需要描述復雜幾何體但不希望支持數據綁定,動畫或修改的開銷時,請使用StreamGeometry。 由於其效率,StreamGeometry類是描述裝飾者的不錯選擇。

和這里:

如果StreamGeometry包含Transform或任何非描邊或未填充的段,則無法序列化。

因此,請使用PathGeomerty ,如@Clemens所建議的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM