c# - 使用 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>
现在,我想删除边距并使列表中每个徽标的背景透明。
我已经尝试过的:
- 从DrawingGroup.Children中删除第一个GeometryDrawing会为每张图片生成不同的默认尺寸(删除第一个 GeometryDrawing)
- 为第一个GeometryDrawing对象的Geometry属性设置另一个值: Geometry="F1M16,16L0,16 0,0 16,0z"仍然在图片上方留下一个边距(调整几何属性)
- 阅读MSDN 页面后,我仍然不清楚如何定义 Geometry 属性,这样我就没有任何边距,并且列表中仍然有所有相同大小的图片。
解决方案
显然,第一个几何图形是矩形的一个过于复杂的版本(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)
推荐阅读
- javascript - Sapper路由器附加而不是替换
- android - Android Studio“忘记”布局文件存在
- http - 使用 Http 获取请求,使用 WebSocket 给出结果
- java - 使用 Java 开发工具包在代码中嵌入 AWS IAM 凭证
- r - R - 从 json 中提取数据
- python - json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 运行代码时出现此错误
- react-native - react-native 捆绑图像路径
- c++ - 以优雅的方式在游戏引擎中管理指向已销毁对象的指针
- amazon-web-services - AWS S3 存储的对象锁定设置不起作用
- asp.net-core - 自定义错误页面 .Net Core Web 应用程序未显示 500 错误