WPF系列八:图形控件Path

简介

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.rhkb.cn/news/412.html

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

相关文章

基类指针指向派生类对象,基类指针的首地址永远指向子类从基类继承的基类首地址

文章目录 基类指针指向派生类对象&#xff0c;基类指针的首地址永远指向子类从基类继承的基类起始地址。代码代码2 基类指针指向派生类对象&#xff0c;基类指针的首地址永远指向子类从基类继承的基类起始地址。 代码 #include <iostream> using namespace std;class b…

《Spring Framework实战》3:概览

欢迎观看《Spring Framework实战》视频教程 Spring Framework 为基于现代 Java 的企业应用程序提供了全面的编程和配置模型 - 在任何类型的部署平台上。 Spring 的一个关键要素是应用程序级别的基础设施支持&#xff1a;Spring 专注于企业应用程序的 “管道”&#xff0c;以便…

antd-design-vue1.7.8浏览器中使用

快速开始 引入js和css <link href"antd/antd.css" rel"stylesheet"> <script src"vue2/vue.js" type"text/javascript"></script> <script src"antd/antd.js" type"text/javascript">&…

SQL美化器优化

文章目录 1.目录2.代码 1.目录 2.代码 package com.sunxiansheng.mybatis.plus.inteceptor;import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.mapping.*; import org.apache.ibatis.plugin.*; import org.apache.ibatis.reflection.*…

【前端】【HTML】入门基础知识

参考视频&#xff1a;【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 一、基本结构 二、基本标签 <h1>&#xff1a;一级标题&#xff0c;通常用于页面的主标题&#xff0c;字体较大且醒目。 <h2>&#xff1a;二级标题&#xff0c;用于副标题或主要章节标…

游戏引擎学习第78天

Blackboard: Position ! Collision “网格” 昨天想到的一个点&#xff0c;可能本来就应该想到&#xff0c;但有时反而不立即思考这些问题也能带来一些好处。节目是周期性的&#xff0c;每天不需要全程关注&#xff0c;通常只是在晚上思考&#xff0c;因此有时我们可能不能那么…

后端服务集成ElasticSearch搜索功能技术方案

文章目录 一、为什么选用ElasticSearch二、ElasticSearch基本概念1、文档和字段2、索引和映射3、倒排索引、文档和词条4、分词器 三、ElasticSearch工作原理1、Term Dictionary、Term index2、Stored Fields3、Docs Values4、Segment5、Lucene6、高性能、高扩展性、高可用①高性…

js:正则表达式

目录 正则表达式的语法 定义 检测 检索 元字符 边界符 量词 字符类 表单判断案例 修饰符 过滤敏感词 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本字符组合模式 正则表达式是一…

[创业之路-242]:《华为双向指挥系统》-1-组织再造-企业普遍采用的5种组织结构形式

目录 一、直线式 二、职能式 三、直线职能式 四、矩阵式&#xff08;项目矩阵&#xff09; 五、事业部式 企业采用哪一种管理组织形式要根据企业具体的生产经营活动特点而定&#xff0c;不同的企业组织形式也不同&#xff0c;目前企业中普遍采用的组织形式主要有直线式、职…

elasticsearch中IK分词器

1、什么是IK分词器 ElasticSearch 几种常用分词器如下&#xff1a; 分词器分词方式StandardAnalyzer单字分词CJKAnalyzer二分法IKAnalyzer词库分词 分词∶即把一段中文或者别的划分成一个个的关键字&#xff0c;我们在搜索时候会把自己的信息进行分词&#xff0c;会把数据库…

【简博士统计学习方法】第2章:3. 感知机——学习算法之原始形式:算法解说

3. 感知机——学习算法之原始形式&#xff1a;算法解说 3.1 学习问题 给定训练数据集&#xff1a; T { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T{(x…

Browser-Use Web UI:浏览器自动化与AI的完美结合

Browser-Use Web UI:浏览器自动化与AI的完美结合 前言简介一、克隆项目二、安装与环境配置1. Python版本要求2. 安装依赖3. 安装 Playwright4. 配置环境变量(非必要步骤)三、启动 WebUI四、配置1. Agent设置2. 大模型设置3. 浏览器相关设置4. 运行 Agent结语前言 Web UI是在…

C# XPTable 日期字段处理(XPTable控件使用说明十三)

1、SQLite数据库定义为日期类型 2、XPtable中日期字段定义与显示 //显示时间表columnModel1.Columns.Clear();columnModel1.Columns.Add(new NumberColumn("id", 30));NumberColumn numberColumn new NumberColumn("次数", 50);numberColumn.Maximum 100…

笔记本电脑 选购 回收 特权模式使用 指南

笔记本电脑 factor 无线网卡&#xff1a;有些笔记本无法检测到特定频段的信息&#xff0c;会导致连不上校园网 sudo iwlist wlp2s0 scan | grep Frequency > net.txt cat net.txt>表示用终端输出覆盖后续文件&#xff0c;>>表示添加到后续文件的末尾 一种更简…

openCvSharp 计算机视觉图片找茬

一、安装包 <PackageReference Include"OpenCvSharp4" Version"4.10.0.20241108" /> <PackageReference Include"OpenCvSharp4.runtime.win" Version"4.10.0.20241108" /> 二、准备两张图片 三、编写代码 using OpenCv…

基于Python的社交音乐分享平台

基于Python的社交音乐分享平台是一个集成了音乐分享、社交互动以及个性化推荐等多功能于一体的综合性平台。 一、平台概述 该平台利用Python的强大功能和高效开发特性&#xff0c;结合前端技术如HTML、CSS、JavaScript以及前端框架如Vue.js或React&#xff0c;共同构建了一个…

潜力巨大但道路曲折的量子计算

近一年来&#xff0c;由于工作的原因参观访问了一些量子产业园&#xff0c;接触了量子加密计算机、量子云计算等非常炫酷的概念性产品&#xff0c;这与自己一直认为的“量子技术仍然处于实验室研究阶段”的基本判断与认知产生了强烈的冲突&#xff0c;一刹那间&#xff0c;心中…

互联网全景消息(10)之Kafka深度剖析(中)

一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

21、Transformer Masked loss原理精讲及其PyTorch逐行实现

1. Transformer结构图 2. python import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0batch_size 2seq_length 3vocab_size 4logits torch.randn(batch…

Agentless:OpenAI 采用的非代理框架

不需要代理库来解决复杂的业务问题。Agentless 是OpenAI采用的非代理框架&#xff0c;用于在 o3 的 SWE Bench 上实现最高精度。SWE-bench 是 github的真实软件工程问题基准。Agentless 遵循简单的三阶段流程&#xff1a;本地化、修复和补丁验证&#xff1a; 1 ⃣生成存储库的…