首页 > 解决方案 > 使用 GeometryDrawing 对象删除边距并设置矢量图标的大小

问题描述

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

协议徽标从 .png 转换为 .xaml 后,当前 UI 如下所示: 当前 UI 状态

一个 .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>

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

我已经尝试过的:

标签: c#.netwpfxaml

解决方案


显然,第一个几何图形是矩形的一个过于复杂的版本(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)


推荐阅读