XAML项目(Silverlight / WPF)图像或转换后的XAML路径

时间:2010-08-04 15:56:30

标签: wpf silverlight xaml

我的队友和我正在讨论将项目使用的图标转换为XAML的相对优点。 Blend有一个“导入”选项,我们可以使用它将项目中的一些图像资源自动转换为XAML Path元素。

一方面,通过生产XAML,装配将保持很小。另一方面,仅仅具有图像参考是简单的。我认为有缺陷的另一个论点(如果我错了,请纠正我)是我们需要“缩小”我们的XAML,包括< Image Source =“......”与< Path Data =“的键击次数减少。 ..“这将包括更多的文字。

其他经验是什么,是否有一种绝对“正确”的方法。

1 个答案:

答案 0 :(得分:2)

您可以将XAML绘图放入资源中,然后引用它们。这将生成保持较小的程序集,只需添加对绘图的引用即可轻松完成,并获得完全“缩小”的XAML。与您的第一种方法相比,不需要额外的击键。

在项目的某个地方,你有一个包含图纸的资源字典:

<DrawingImage x:Key="image1">
    <DrawingImage.Drawing>
        <GeometryDrawing>
            <GeometryDrawing.Geometry>
                <GeometryGroup>
                    <EllipseGeometry Center="50,50" RadiusX="45" RadiusY="20" />
                    <EllipseGeometry Center="50,50" RadiusX="20" RadiusY="45" />
                </GeometryGroup>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Brush>
                <LinearGradientBrush>
                    <GradientStop Offset="0.0" Color="Blue" />
                    <GradientStop Offset="1.0" Color="#CCCCFF" />
                </LinearGradientBrush>
            </GeometryDrawing.Brush>
            <GeometryDrawing.Pen>
                <Pen Thickness="10" Brush="Black" />
            </GeometryDrawing.Pen>
        </GeometryDrawing>
    </DrawingImage.Drawing>
</DrawingImage>

根据位图机会的大小和复杂程度,您将作为资源添加到程序集中的位图不会占用更多空间,您可以使用xaml实际节省空间。

然后在您的代码中引用此绘图,只需引用您的位图即可。没有区别:

<Image Source="{StaticResource image1}" />

您可以使用Microsoft Expression Design自动向量化您的位图(“对象 - >图像 - >自动跟踪位图”)并将其导出为XAML绘图。它会创建一个DrawingBrush。但您可以使用DrawingImage安全地替换它。