2010-08-04 107 views
2

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

一方面,通过生产XAML,组件将保持较小。另一方面,仅仅有一个图像参考是简单的。另一个我认为有缺陷的观点(纠正我,如果我错了)是我们需要“缩小”我们的XAML,包括< Image Source =“...”与< Path Data =“...” “这将包括更多的文字。

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

回答

2

你可以把你的XAML图纸放入资源库,然后引用它们。这会产生很小的程序集,你可以简单地添加一个绘图引用,然后完全“缩小”XAML。与您的第一种方法相比,不需要额外的按键操作。

某处在你的项目,你有一个包含绘图ResourceDictionary中:

<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替换它。