将 SVG 数据提取到 XAML

Ral*_*alt 0 c# wpf xaml svg

我正在尝试提取 SVG 数据并将其显示在我正在处理的项目的 WPF 表单上。问题是我无法让 XAML 以与 SVG 相同的方式显示

SVG 图像

SVG 图像

SVG 代码

<ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 -11.7477 28.3614)"
         fill="#6DBE45"
         cx="28.4" cy="28.4"
         rx="32.5" ry="23.5"/>

<ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 4.1498 66.7412)"
         fill="#991B1E"
         cx="82.6" cy="28.4"
         rx="32.5" ry="23.5"/>
Run Code Online (Sandbox Code Playgroud)

XAML 图像

在此处输入图片说明

XAML 代码

<Canvas>
  <Ellipse Width="65" Height="47" Fill="Green">
            <Ellipse.RenderTransform>
                <TransformGroup>
                    <MatrixTransform Matrix="0.7071 -0.7071 0.7071 0.7071 -11.7477 28.3614" />
                    <TranslateTransform X="28.4" Y="28.4"/>
                </TransformGroup>
            </Ellipse.RenderTransform>
  </Ellipse>
  <Ellipse Width="65" Height="47" Fill="Red">
            <Ellipse.RenderTransform>
                <TransformGroup>
                    <MatrixTransform Matrix="0.7071 -0.7071 0.7071 0.7071 4.1498 66.7412" />
                    <TranslateTransform X="82.6" Y="28.4"/>
                </TransformGroup>
            </Ellipse.RenderTransform>
  </Ellipse>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

我在做什么:

Height = ry (radiusY) * 2
Width = rx (radiusX) * 2

Matrix transform = transform values
Translate trasnform = cx (coordiante x), cy (coordiante y)
Run Code Online (Sandbox Code Playgroud)

当所有值(在我脑海中)似乎都有意义时,我不确定为什么它们的显示方式非常不同

Cle*_*ens 5

您可能会更好地将Path元素与 EllipseGeometries 结合使用。与Ellipse元素相比的优势在于您可以明确指定Center,RadiusXRadiusY属性。

现在您可以使用 SVG 中的确切值:

<Canvas>
    <Path Fill="Green">
        <Path.Data>
            <EllipseGeometry
                Center="28.4 28.4"
                RadiusX="32.5" RadiusY="23.5"
                Transform="0.7071 -0.7071 0.7071 0.7071 -11.7477 28.3614"/>
        </Path.Data>
    </Path>
    <Path Fill="Red">
        <Path.Data>
            <EllipseGeometry
                Center="82.6 28.4"
                RadiusX="32.5" RadiusY="23.5"
                Transform="0.7071 -0.7071 0.7071 0.7071 4.1498 66.7412"/>
        </Path.Data>
    </Path>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

结果是这样的: 在此处输入图片说明