当前位置: 首页 > news >正文

WPF Canvas 网格线背景样式

该代码片段是 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.hskmm.com/?act=detail&tid=9648

相关文章:

  • C++ 最开始的地方
  • ClkLog埋点与用户行为分析系统:架构升级与性能全面提升
  • 常见开源安全工具列表
  • ARC187 做题记
  • SAP物料自动记账科目设置总结
  • SpringBoot启动流程
  • NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控一站式建设方案
  • 移远模组使用移远云平台对接指令
  • 解码C语言关键字
  • 接龙大师微信小程序管理系统:一站式社群信息收集与活动管理解决方案
  • Windows环境中安装Zookeeper
  • YOLOv7安全评估揭示11个漏洞:RCE攻击与模型差异风险
  • ​​电流探头选型技术指南:精准捕获电流信号的艺术​​
  • 读人形机器人16本地制造的环境和经济效益
  • 详细介绍:【卷积神经网络详解与实例】10——经典CNN之GoogLeNet
  • openEuler 24.03 (LTS-SP2)安装mysql 8.4.5(glib.2.17)
  • wso2~api的高级限流策略
  • openEuler安装mysql矩阵
  • 【转载】达梦数据库物理备份与逻辑备份的区别
  • openEuler使用xtrabackup报libssl.so问题
  • jmeter中八大元件的执行顺序
  • Ubuntu 安装 JDK
  • EHOME视频平台EasyCVR视频分析设备平台监控摄像机的接入与智能视频分析
  • python+excel实现办公自动化学习 - 教程
  • 详细介绍:集成学习算法简介
  • 智投助手v0.0.4 发布
  • Kaggle的[公共数据集平台]
  • UE5 MPCook 时序图
  • P7435 简单的排列计数
  • Nexpose 8.21.0 for Linux Windows - 漏洞扫描