WPF Canvas 网格线背景样式

news/2025/9/19 14:37:40/文章来源:https://www.cnblogs.com/dosswy/p/19100842

该代码片段是 WPF 中 UserControl 的资源定义,核心功能是为 Canvas 控件创建带虚线网格线的背景样式,通过自定义 DrawingBrush 实现重复排列的网格效果,具体说明如下:

一、样式基础信息

  • 目标控件:Canvas(画布控件),样式通过 x:Key="canvasBackground" 标识,需手动为 Canvas 控件指定 Style="{StaticResource canvasBackground}" 才能生效。

  • 核心实现逻辑:通过 Setter 重写 Canvas 的 Background 属性,使用 DrawingBrush 作为背景绘制载体,而非传统纯色或图片,实现灵活的网格线定制。

二、网格线关键配置

1. DrawingBrush 基础设置(控制网格重复规则)

  • TileMode="Tile":设置网格 “平铺模式”,即让绘制的基础网格单元在 Canvas 背景中重复排列,填满整个画布。

  • Viewport="0,0,35,35":定义网格单元的 “视口范围”,其中 (0,0) 是单元起始坐标,35,35 表示每个网格单元的宽高均为 35 像素,即网格线的间距为 35 像素。

  • ViewportUnits="Absolute":指定 Viewport 的单位为 “绝对像素”,确保网格间距不随 Canvas 尺寸缩放而变化。

2. 网格线外观定义(控制线条样式)

通过 GeometryDrawing 组合 “画笔(Pen)” 和 “几何图形(Geometry)”,实现网格线绘制:

  • 画笔(Pen):定义线条的视觉属性

    • Brush="#DCE6EB":网格线颜色为浅灰蓝色(低饱和度,避免遮挡画布内容)。

    • Thickness="0.5":线条宽度为 0.5 像素(细线条,保持背景简洁)。

    • DashStyle Dashes="6,6":线条为 “虚线样式”,实线段与空白段长度均为 6 像素,增强网格的轻量化视觉效果。

  • 几何图形(GeometryGroup):定义线条的形状与位置

    • 包含两条 LineGeometry(直线):一条垂直方向(StartPoint="0,0" EndPoint="0,20")、一条水平方向(StartPoint="0,0" EndPoint="20,0"),共同构成单个网格单元的 “十字线基础”,结合 TileMode 平铺后形成完整网格。
<UserControl.Resources><!--Canvas画布网格线背景--><Style TargetType="Canvas" x:Key="canvasBackground"><Setter Property="Background"><Setter.Value><!-- 定义DrawingBrush,用于绘制网格线 --><DrawingBrush TileMode="Tile" Viewport="0,0,35,35" ViewportUnits="Absolute"><DrawingBrush.Drawing><GeometryDrawing><GeometryDrawing.Pen><!-- 设置网格线的颜色和宽度 --><Pen Brush="#DCE6EB" Thickness="0.5"><!--定义一个虚线样式--><Pen.DashStyle><DashStyle Dashes="6,6"/></Pen.DashStyle></Pen> </GeometryDrawing.Pen><GeometryDrawing.Geometry><!-- 创建一个几何图形,用于绘制网格线 --><GeometryGroup><LineGeometry StartPoint="0,0" EndPoint="0,20"/><LineGeometry StartPoint="0,0" EndPoint="20,0"/></GeometryGroup></GeometryDrawing.Geometry></GeometryDrawing></DrawingBrush.Drawing></DrawingBrush></Setter.Value></Setter></Style></UserControl.Resources>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:【vue+exceljs+file-saver】纯前端:下载excel和上传解析excel

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C++ 最开始的地方

初学C++,最主要的是创建程序,然后把程序跑起来。 所以不要光盯着知识点, 多熟悉从创建代码,到执行代码,然后修改输出的整个流程。 用指法打字 先提打字是因为很多人不注重打字的指法。千万不要把自己练成一指禅!…

ClkLog埋点与用户行为分析系统:架构升级与性能全面提升

随着越来越多企业在实际业务中使用 ClkLog,数据规模和分析需求也不断提升,部分用户日活已经超过10万,为了顺应这一趋势,ClkLog 秉持 “开放透明、持续演进”的理念,推出了迄今为止最重要的一次性能优化升级。新版…

常见开源安全工具列表

强大的开源安全工具列表 许多开源工具的功能完全不输商业工具。 工具名称类别简介及用途著名开源替代于OWASP ZAP Web扫描 OWASP旗舰项目,类似Burp Suite的代理和扫描器,极易上手。 Burp SuiteNessus (开源版停发) 漏…

ARC187 做题记

训A () 题意 题解 \(\bf{record}\) B () 题意 题解 \(\bf{record}\) C () 题意 题解 \(\bf{record}\) D () 题意 题解 \(\bf{record}\)

lombok与mapstruct冲突的问题

现象 在生成的mapper方法中,没有调用实体类的getter和setter解决方案 配置plugin时需要加入lombok-mapstruct-binding依赖 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>…

SAP物料自动记账科目设置总结

一、科目确定说明 1、在sap中物料的出库和入库都是通过移动类型关联到科目确定,然后确定对应的记账科目,这一过程称之为自动记账科目确定。 自动记账科目确定定义:自动记账科目是指在执行某些业务交易(如采购、销售…

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控一站式建设方案

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控一站式建设方案一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步,社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车…

移远模组使用移远云平台对接指令

1. 地址和服务器地址 欧洲移远云服务器地址和登录信息网页 https://core.acceleronix.iomqtt://iot-south.acceleronix.io:1883PK: 邮箱:Sheldon.qiao@inventronicsglobal.com 国内的移远服务器地址网页: https:/…

解码C语言关键字

一、数据类型关键字(12个) 1. 基础类型关键字 用途 示例char 字符类型 char c = A;int 整型 int num = 10;float 单精度浮点型 float f = 3.14f;double 双精度浮点型 double d = 2.718;void 无类型(函数/指针) voi…

天使美容 V2 微信小程序管理系统:美业数字化运营新选择

一、概述总结 天使美容 V2 是一款专为美业打造的小程序系统,涵盖微信小程序与抖音小程序两大主流平台形态,提供源码下载与定制开发服务,依托微擎系统完成交付。该系统拥有全新 UI 界面与独立优雅后台,兼顾视觉美感…

2025年最火的免费客服系统分享

2025年最火的免费客服系统分享在数字化服务日益重要的2025年,高效的客服系统已成为企业提升客户体验、优化运营成本的核心工具。对于预算有限的中小企业和初创团队来说,一款真正免费、功能全面且稳定的客服软件至关重…

接龙大师微信小程序管理系统:一站式社群信息收集与活动管理解决方案

在社群运营中,传统群接龙常面临信息混乱、易被覆盖、统计困难等问题,而接龙大师作为一款基于微信小程序的专业工具,凭借安全易用的特性,为各类社群提供了通知、打卡、填表、问卷、报名、预约、团购等一体化信息收集…

Windows环境中安装Zookeeper

配置证书: https://blog.51cto.com/u_13236892/5507601 一、安装Zookeeper 1、下载并解压Zookeeper安装包 ● 官网下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin…

YOLOv7安全评估揭示11个漏洞:RCE攻击与模型差异风险

本文详细分析了YOLOv7计算机视觉框架存在的11个安全漏洞,包括远程代码执行、拒绝服务攻击和模型差异风险,并提供了威胁建模方法和代码审查结果,最后提出具体安全改进建议。评估广泛使用的视觉模型安全状况:YOLOv7 …

​​电流探头选型技术指南:精准捕获电流信号的艺术​​

电流探头选型需考虑带宽、量程、精度及隔离等关键参数,以满足不同应用场景下的测量需求。在电力电子、新能源及高速数字系统设计中,电流测量是分析效率、优化EMI和保障可靠性的关键环节。面对从微安级到千安级、从直…

MCP服务自用

{"servers": {// add your MCP servers configuration here. // support both local(stdio) and remote(SSE/Streamable HTTP) servers.// reference: https://docs.github.com/en/copilot/customizing-copi…

Nexpose 8.21.0 for Linux Windows - 漏洞扫描

Nexpose 8.21.0 for Linux & Windows - 漏洞扫描Nexpose 8.21.0 for Linux & Windows - 漏洞扫描 Rapid7 on-prem Vulnerability Management, released Sep 17, 2025 请访问原文链接:https://sysin.org/blog/…

slurm启动验证命令

Slurm 核心组件与启动原理 Slurm主要由三个守护进程(daemon)组成:slurmctld:中央管理守护进程,运行在管理节点上。负责监控工作、调度作业、管理节点。slurmd:计算节点守护进程,运行在每个计算节点上。负责接收…

实用指南:LeetCode //C - 836. Rectangle Overlap

实用指南:LeetCode //C - 836. Rectangle Overlap2025-09-19 13:30 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…