WPF系列八:图形控件Path

server/2025/1/15 21:49:57/

简介

Path控件支持一种称为路径迷你语言(Path Mini-Language)的紧凑字符串格式,用于描述复杂的几何图形。这种语言通过一系列命令字母和坐标来定义路径上的点和线段,最终绘制出想要的图形

  • 绘制任意形状:可以用来绘制直线、曲线、多边形、椭圆、矩形等基本图形,也可以组合这些基本图形创建复杂形状。
  • 应用样式和效果:支持填充颜色、轮廓线(笔触)、渐变、图像刷子以及各种视觉效果。
  • 动画化图形:可以对图形的位置、大小、旋转角度等属性进行动画处理。
  • 作为剪辑区域:可以将 Path 用作其他 UI 元素的剪辑路径,以控制其可见区域。

属性

  • Data:定义要绘制的几何对象或路径指令。这是 Path 的核心属性,决定了它的外形。
  • Fill:指定用于填充 Path 内部的画刷(Brush),比如纯色、渐变或图像。
  • Stroke:设置 Path 边缘的颜色或画刷。
  • StrokeThickness:设定 Path 边缘的宽度。
  • Stretch:控制如何拉伸 Path 内的内容以适应其尺寸。可用值有 NoneFillUniform, 和 UniformToFill
  • RenderTransform:允许你对 Path 应用变换,如旋转、缩放和平移等。

命令

  • M/m - Move To:将当前位置移动到新的位置而不绘制任何东西。大写 M 表示绝对坐标,小写 m 表示相对坐标。
  • L/l - Line To:从当前位置画一条直线到指定的新位置。同样地,大写 L 是绝对坐标,小写 l 是相对坐标。
  • H/h - Horizontal Line To:画一条水平线到指定的 X 坐标位置。大写 H 使用绝对坐标,小写 h 使用相对坐标。
  • V/v - Vertical Line To:画一条垂直线到指定的 Y 坐标位置。大写 V 使用绝对坐标,小写 v 使用相对坐标。
  • C/c - Curve To:三次贝塞尔曲线。需要三个点:两个控制点和一个结束点。大写 C 使用绝对坐标,小写 c 使用相对坐标。
  • S/s - Smooth Curve To:平滑三次贝塞尔曲线。仅需指定结束点,第一个控制点自动计算为上一个 C 或 S 的反射点。大写 S 使用绝对坐标,小写 s 使用相对坐标。
  • Q/q - Quadratic Bezier Curve To:二次贝塞尔曲线。需要一个控制点和一个结束点。大写 Q 使用绝对坐标,小写 q 使用相对坐标。
  • T/t - Smooth Quadratic Bezier Curve To:平滑二次贝塞尔曲线。仅需指定结束点,控制点根据前一个 Q 或 T 自动计算。大写 T 使用绝对坐标,小写 t 使用相对坐标。
  • A/a - Elliptical Arc To:椭圆弧。需要多个参数来定义弧的形状、旋转角度、是否大弧或小弧、扫掠方向以及终点。大写 A 使用绝对坐标,小写 a 使用相对坐标。
  • Z/z - Close Path:关闭路径,即画一条直线回到路径的起始点。

示例

  • 绘制一段椭圆弧,它位于中心为 (100,100) 的点,并且以半径 50x50 绘制,直到到达 (500,100),最后用 Z 指令闭合路径。

代码:

<Window x:Class="WPFDemo.Line.Views.PathWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemo.Line.Views"mc:Ignorable="d"Title="PathWindow" Height="450" Width="800"><Grid HorizontalAlignment="Center" VerticalAlignment="Center"><!-- 创建一个半圆图形--><Path Data="M 100,100 A 50,50 0 0,1 500,100 Z" Stroke="Black" StrokeThickness="2" Fill="LightBlue"/></Grid>
</Window>

效果:

  • 绘制一个三角形,起点在 (10,100),然后依次连接到 (100,100) 和 (100,50),最后用 Z 指令闭合路径。

代码:

<Window x:Class="WPFDemo.Line.Views.PathWindow1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemo.Line.Views"mc:Ignorable="d"Title="PathWindow1" Height="450" Width="800"><Grid HorizontalAlignment="Center" VerticalAlignment="Center"><!--创建一个三角形--><Path Stroke="Red" StrokeThickness="2" Fill="Yellow" Data="M 100,100 L 400,100 L 400,400 Z" /></Grid>
</Window>

效果:

  • 绘制一个三次贝塞尔曲线,从 (10,100) 开始,通过控制点 (50,200) 和 (150,10),到达终点 (200,100),,最后用 Z 指令闭合路径。

代码:

<Window x:Class="WPFDemo.Line.Views.PathWindow2"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemo.Line.Views"mc:Ignorable="d"Title="PathWindow2" Height="450" Width="800"><Grid HorizontalAlignment="Center" VerticalAlignment="Center"><!--创建一个三次贝塞尔曲线--><Path Stroke="Black"  StrokeThickness="2" Fill="Red" Data="M 10,100 C 50,200 150,10 200,100 Z"/></Grid>
</Window>

效果:


http://www.ppmy.cn/server/158216.html

相关文章

RPC调用初识

什么是RPC远程调用&#xff1f; 远程调用会遇到的问题&#xff1a; 1.call id 的映射 2.序列化和反序列化 3.网络传输 为什么一个函数&#xff0c;要放在另一台服务器上面&#xff0c;在本地跑不是更好吗&#xff1f; 当电商系统&#xff0c;有一段逻辑是扣减库存了&#x…

上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天探底回升&#xff0c;沪指盘中跌超1.6%&#xff0c;创业板指一度跌逾3%&#xff0c;午后集体拉升翻红…

爬虫基础之爬取歌曲宝歌曲批量下载

声明&#xff1a;本案列仅供学习交流使用 任何用于非法用途均与本作者无关 需求分析: 网站:邓紫棋-mp3在线免费下载-歌曲宝-找歌就用歌曲宝-MP3音乐高品质在线免费下载 (gequbao.com) 爬取 歌曲名 歌曲 实现歌手名称下载所有歌曲 本案列所使用的模块 requests (发送…

JAVA之单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。在软件设计中&#xff0c;单例模式常用于控制对资源的访问&#xff0c;例如数据库连接、线程池等。以下是单例模式的详…

25/1/13 算法笔记<嵌入式> 继续学习Esp32

PWM&#xff08;Pulse Width Modulation&#xff0c;脉宽调制&#xff09; 是一种通过快速切换高低电平来模拟中间电压值的技术。它广泛应用于控制 LED 亮度、电机速度、音频生成等场景。 analogWrite函数:用于在微控制器&#xff08;如 Arduino&#xff09;上生成模拟信号。 …

网络原理(二)—— https

https 简介 https 也是一个应用层协议&#xff0c;他是由 http 和 SSL 组成的&#xff08;在 http 的基础上进行加密&#xff0c;把原本http 的明文传输变为了密文传输&#xff09;&#xff0c;简称为 https。 加密的方式大体分为两大类&#xff0c;分别是对称加密和非对称加…

【HTML+CSS+JS+VUE】web前端教程-20-选择器(二)

ID选择器 针对某一个特定的标签来使用,只能使用一次,css中的ID选择器以#定义 <p id="nihao">你好</p>#nihao{color: red;font-size: 50px;}特别强调; ID是唯一的 ID不能以数字开头 合并选择器

CSS响应式

除了常见的media、flex、grid外的其他css响应元素 1.min()函数 当我们想根据不同尺寸调整容器的边距时&#xff0c;首先想到的可能是媒体查询 <style>.container{padding: 5em;}media (max-width: 600px) {.container{padding: 2em;}} </style> <div class&…