使用GeometryDrawing对象删除边距并设置矢量图标的大小

时间:2018-10-09 08:53:45

标签: c# .net wpf xaml

我正在尝试使用文件对象及其属性列表来构建GridView。属性之一是文件支持的现场总线协议的徽标。

将协议徽标从.png转换为.xaml后,当前的UI如下所示: Current UI state

一个.xaml徽标文件的示例:

<?xml version="1.0" encoding="utf-8"?>
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <DrawingImage x:Key="EtherCAT_design">
            <DrawingImage.Drawing>
                <DrawingGroup>
                    <DrawingGroup.Children>
                        <GeometryDrawing Brush="#FFFEFEFE"
                                         Geometry="F1 M0,601.33335 L0,0 947.33335,0 1894.6667,0 1894.6667,601.33335 1894.6667,1202.6667 947.33335,1202.6667 0,1202.6667 z" />
                        <GeometryDrawing Brush="..."
                                         Geometry="..." />
                        <GeometryDrawing Brush="..."
                                         Geometry="..." />
                        ...
                        ...
                    </DrawingGroup.Children>
                </DrawingGroup>
            </DrawingImage.Drawing>
        </DrawingImage>
    </ResourceDictionary>

现在,我想删除边距,并使列表中每个徽标的背景透明

我已经尝试过的方法:

  • DrawingGroup.Children 中删除第一个 GeometryDrawing 会为每张图片(Removing the first GeometryDrawing)产生不同的默认大小
  • 为第一个 GeometryDrawing 对象的 Geometry 属性设置另一个值: Geometry =“ F1M16,16L0,16 0,0 16,0z” 仍然在图片(Adjusting the Geometry property)上方留有边距
  • 在阅读MSDN page之后,我仍然不清楚如何定义Geometry属性,这样我就不会有任何空白,并且列表上的所有图片的大小都相同。

1 个答案:

答案 0 :(得分:0)

显然,第一个几何是矩形(0, 0, 1894.6667, 1202.6667)的复杂版本。

假设图标的中心位于“框架”矩形的中心,即大约(947, 601)处,则可以简单地创建一个以同一点为中心的较小矩形。将其放入透明的GeometryDrawing中:

<GeometryDrawing Brush="Transparent">
    <GeometryDrawing.Geometry>
        <RectangleGeometry Rect="547,201,800,800"/>
    </GeometryDrawing.Geometry>
</GeometryDrawing>

上面的示例定义了一个800 x 800矩形,该矩形仍居于(947, 601)