将变换应用于源xaml

时间:2012-10-16 14:23:59

标签: wpf silverlight xaml

我对XAML和Blend有点问题。我们已经从AI -> SVG -> XAML转换了公司徽标,清理了一下它产生了一个非常奇特的来源。从本质上讲,它正在应用"翻转"转换为路径集合:

<Canvas Width="640" Height="200" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Canvas Width="640" Height="200" RenderTransform="1,0,0,-1,0,200" >

        <!-- L -->
        <Canvas RenderTransform="1,0,0,1,317.0645,64.3652">
            <Path>
                <Path.Data>
                    <PathGeometry FillRule="Nonzero" Figures="M0,0L0,75.065 18.743,76.83 18.743,17.066 43.553,17.066 38.564,0 0,0z" />
                </Path.Data>
            </Path>
        </Canvas>
        ... etc

请注意封闭RenderTransform="1,0,0,-1,0,200"中的Canvas节点。它将画布颠倒翻转并将其降低200以调整到根画布位置。鉴于taht Logo在渲染时看起来没问题意味着xaml中的所有图形元素实际上都是颠倒的:)。也许它是人工智能的东西,我不知道。

问题是我现在使用Blend将此画布转换为GraphicBrush。混合省略了变换,并且在应用画笔时徽标向下看。而不是再次转换每个画笔接收者,我在想,也许我们应该在根处修复它,例如转换所有路径,以便它们正确呈现,从而避免需要根变换。

问题:是否有程序化(或任何其他方式)来执行此操作?这意味着,我可以渲染这个画布,然后将渲染(在应用所有变换后)DOM序列化为XAML吗?

或者使问题更清楚:每个路径都有两个变换(如上所示,每个路径有一个全局翻转和一个局部移位),我可以某种方式将这些变换应用于每个路径/其点以便路径没有他们的渲染。

1 个答案:

答案 0 :(得分:1)

您可以使用Microsoft Expression套件中 Expression Design 内置的导出到XAML功能。

或者我个人通常使用Mike Swanson的AI to XAML converter,因为我通常已经在Illustrator中使用更复杂的矢量图形。

两者都会提供比您使用的转换器更好的结果。不知道原始转换在RenderTransforms等处变得如此古怪,但正如你所发现的那样,有一个良好的转换开始,然后经历修复坏的哈哈的麻烦。

干杯!