【问题标题】:How to give the combination of path and shapes as an input to image source in xaml如何将路径和形状的组合作为 xaml 中图像源的输入
【发布时间】:2017-03-20 23:34:48
【问题描述】:

我有一个 svg 文件,内容是两组路径和一些多边形,我应该将它们用作图像源的输入。(svg 内容:包含路径和多边形形状集合的两个 gid)

我从 svg 中提取了如下路径和多边形并创建了几何组

   <GeometryGroup x:Key="icon-2"
  PresentationOptions:Freeze="True" >
        <PathGeometry Figures="M0.664201681.........." />
        <PathGeometry Figures="M0.664201681.........." />
    <PathGeometry Figures="M0.664201681.........." />
    </GeometryGroup>

    <GeometryGroup x:Key="icon-1"
  PresentationOptions:Freeze="True" >
        <PathGeometry Figures="M0.664201681.........." />
        <PathGeometry Figures="M0.664201681.........." />
    <PathGeometry Figures="M0.664201681.........." />
    </GeometryGroup>

我在 svg 文件中有一些多边形,如下所示

<polygon id="Shape" fill="#0067B1" points="42.1853782 0.249018403 0.249008405........"></polygon>

我尝试添加上面的多边形,但我得到一个错误,说不支持多边形。

<Style
    x:Key="myLogoStyle"
    TargetType="Image">
    <Setter
        Property="Source">
<Setter.Value>
        <DrawingImage
     PresentationOptions:Freeze="True" >
            <DrawingImage.Drawing>
                <DrawingGroup>
                    <GeometryDrawing Brush="#FFFFFF"
      Geometry="{StaticResource icon-2}" />
                    <GeometryDrawing Brush="#000000"
      Geometry="{StaticResource icon-1}" />
                </DrawingGroup>
            </DrawingImage.Drawing>
        </DrawingImage>
     </Setter.Value>
    </Setter>
    </style>

有人可以建议,有没有办法将路径和形状的组合作为图像源的输入。?

【问题讨论】:

  • Show Drawing.Image in WPF的可能重复
  • 这似乎是您尝试显示 SVG 的解决方案?我不确定用哪个重复来结束这个问题:display svg, draw geometrygroup, ... 或者别的什么。
  • 我想将图像源仅作为几何路径/形状。我们不能直接使用外部 svg/png。
  • 我们只能使用从 svg 文件中提取的几何图形。可以用画布完成,但如果我用图像控制本身就更好了。

标签: c# wpf xaml


【解决方案1】:

不要使用图像控件,而是使用 ContentPresenter 然后将您的资源放入视图框/画布中,它就可以工作了

<Style x:Key="MetroButton" TargetType="Button">
    <Setter Property="MinHeight" Value="30"/>
    <Setter Property="Visibility" Value="Visible"/>
    <Setter Property="Foreground" Value="{DynamicResource Foreground}"/>
    <Setter Property="Background" Value="{DynamicResource BackgroundNormal}"/>
    <Setter Property="BorderBrush" Value="{DynamicResource BorderBrushNormal}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border SnapsToDevicePixels="True"
                        BorderThickness="1"
                        Margin="{TemplateBinding Padding}" 
                        BorderBrush="{TemplateBinding BorderBrush}" 
                        Background="{TemplateBinding Background}">
                    <Grid SnapsToDevicePixels="True">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Grid>
                </Border>

和资源

<Canvas x:Shared="False" Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" x:Key="appbar_add">
    <Path Width="24" Height="24" Canvas.Left="12" Canvas.Top="12" Stretch="Fill" Fill="Black" Data="F1 M 22,12L 26,12L 26,22L 36,22L 36,26L 26,26L 26,36L 22,36L 22,26L 12,26L 12,22L 22,22L 22,12 Z " />
</Canvas>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多