WPF 漂亮长方体、正文体简单实现方法 Path实现长方体 正方体方案 WPF快速实现长方体、正方体的方法源代码

这段XAML代码在WPF中实现了一个类似长方体视觉效果的图形

  1. 声明式绘制:通过Path、PathGeometry和PathFigure等元素组合,能够以声明方式精确描述长方体每个面的位置和形状,无需编写复杂的绘图逻辑,清晰直观。

  2. 层次结构与ZIndex控制:利用Panel.ZIndex属性定义图形的堆叠顺序,从而实现了立体感和前后遮挡效果。这里通过设置负值使得边框线条显示在表面之下,模拟了长方体的边缘效果。

  3. 灵活样式与颜色填充:可以方便地定义各个部分的颜色(Fill属性)和轮廓线(Stroke属性),轻松实现复杂渐变、纹理等填充效果,以及不同宽度和颜色的线条,增强了图形表现力。

  4. 复用与模块化:尽管这里的长方体是由四个Path元素组成,但实际项目中可将这些Path元素封装为一个用户控件或数据模板,实现图形组件的复用和模块化设计。

  5. 动态调整与数据绑定:所有几何路径点的坐标值均可作为动态属性进行绑定,这意味着可以根据运行时的数据变化自动调整长方体的大小和位置,实现动画效果或者响应式布局。

  6. 可视化设计工具支持:由于使用的是标准WPF控件和属性,因此可以在Visual Studio或其他支持WPF的设计器中直接预览和编辑这个长方体图形,提升了UI设计效率。

这段XAML代码充分利用了WPF强大的矢量图形绘制功能及声明式编程模型,既保持了代码简洁性,又实现了良好的视觉效果和扩展性。

<Grid Grid.Row="2" Grid.Column="0">
            <Path Stroke="Black"  StrokeThickness="0" Fill="#fff566">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="80,40" IsClosed="True">
                            <LineSegment Point="80,40" />
                            <LineSegment Point="105,10" />
                            <LineSegment Point="105,70" />
                            <LineSegment Point="80,100" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path Stroke="#bfbfbf"  StrokeThickness="1" Fill="#DEDEDE" Panel.ZIndex="-1">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="105,10" IsClosed="True">
                            <LineSegment Point="105,10" />
                            <LineSegment Point="80,8" />
                            <LineSegment Point="80,68" />
                            <LineSegment Point="105,70" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path Stroke="Black"  StrokeThickness="0" Fill="#d4b106" Panel.ZIndex="0">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="80,40" IsClosed="True">
                            <LineSegment Point="80,40" />
                            <LineSegment Point="80,100" />
                            <LineSegment Point="50,98" />
                            <LineSegment Point="50,38" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
            <Path Stroke="#bfbfbf"  StrokeThickness="1" Fill="#E1E1E1" Panel.ZIndex="-1">
                <Path.Data>
                    <PathGeometry>
                        <PathFigure  StartPoint="50,98" IsClosed="True">
                            <LineSegment Point="50,98" />
                            <LineSegment Point="50,38" />
                            <LineSegment Point="80,8" />
                            <LineSegment Point="80,68" />
                        </PathFigure>
                    </PathGeometry>
                </Path.Data>
            </Path>
        </Grid>

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ之快速入门、上手

前言 学习一样新技术、新框架&#xff0c;最重要的是学习其思想、原理。即原理性思维。 如果是因为工作原因&#xff0c;需要快速上手RabbitMQ&#xff0c;本篇或许适合你。 核心概念 Connection&#xff1a;publisher&#xff0f;consumer 和 broker 之间的 TCP 连接Channel…

Hadoop之Yarn 详细教程

1、yarn 的基本介绍和产生背景 YARN 是 Hadoop2 引入的通用的资源管理和任务调度的平台&#xff0c;可以在 YARN 上运行 MapReduce、Tez、Spark 等多种计算框架&#xff0c;只要计算框架实现了 YARN 所定义的 接口&#xff0c;都可以运行在这套通用的 Hadoop 资源管理和任务调…

nodejs+vue+微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐

对于冷链物流信息调度系统所牵扯的管理及数据保存都是非常多的&#xff0c;例如管理员&#xff1b;首页、用户管理&#xff08;管理员、客户、业务员、配送员&#xff09;客户管理&#xff08;货物信息、客户运输单、车辆信息、调度安排&#xff09;这给管理者的工作带来了巨大…

【机组期末速成】指令系统|机器指令概述|操作数类型与操作类型|寻址方式|指令格式

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;计算机组成原理&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 目录 前言&#xff1a; 一、本章考点总览 二、考点分析 1、以下有关指令系统的说法中错误的是&#xff08; &#xff09;。 2…

【电商项目实战】MD5登录加密及JSR303自定义注解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

mac安装k8s环境

安装kubectl brew install kubectl 确认一下安装的版本 kubectl version --client 如果想在本地运行kubernetes 需要安装minikube brew install minikube 需要注意安装minikube需要本地的docker服务是启动的 启动 默认连接的是google的仓库 minikube start 指定阿…

下载和安装AD14 - Altium Designer 14.3.20.54863

这个版本应该还支持XP 系统[doge]&#xff0c;总之就是想安装一下&#xff0c;没什么特别的意义。 下载 资源来自毛子网站&#xff1a;https://rutracker.net/forum/viewtopic.php?t5140739&#xff0c;带上个网页翻译插件就行。要用磁力链接下载&#xff0c;推荐用qbittorr…

远程网络唤醒家庭主机(openwrt设置)

远程网络唤醒家庭主机&#xff08;openwrt设置&#xff09; 前提&#xff1a; 1.配置好主板bios的网络唤醒功能(网络教程自己百度一下找) 2.电脑开启网络唤醒功能(网络教程自己百度一下找) 3.路由器通过ddns实现域名和动态IP绑定内网穿透方法汇总_不修改光猫进行内网穿透-C…

最新AI系统ChatGPT网站H5系统源码,支持AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

代码质量评价及设计原则

1.评价代码质量的标准 1.1 可维护性 可维护性强的代码指的是: 在不去破坏原有的代码设计以及不引入新的BUG的前提下,能够快速的修改或者新增代码. 不易维护的代码指的是: 在添加或者修改一些功能逻辑的时候,存在极大的引入新的BUG的风险,并且需要花费的时间也很长. 代码可…

如何让python在手机上运行,python程序在手机上运行

大家好&#xff0c;给大家分享一下python怎么在手机上运行爱心代码&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 1. 写在前面的话 天天都在PC端运行Python代码的我&#xff0c;今天突然灵光一现&#xff0c;想着是不是能够在移动端运行P…

C++继承与派生——(6)派生类的析构函数

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 站在巨人的肩上&#xff0c;是为了超过…

初识智慧城市

文章目录 智慧家居 智慧社区 智慧交通 智慧医疗 智慧教育 智慧旅游 智慧农业 智慧安防 智慧家居 利用智能语音、智能交互等技术,实现用户对家居系统各设备的远程操控和能控制如开关窗帘(窗户)、操控家用电器和照明系统、打扫卫生等操作。利用计算机视觉等技术,对被照看…

Spring boot:3.X + Security OAuth2 自定义登录页面、登出后跳转到登录页

本文描述了基于 Spring Oauth2 的 code 模式&#xff0c;实现登陆同时授权、自定义登录界面、登出页面的功能。 1.Maven依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactI…

SAP缓存 表缓存( Table Buffering)

本文主要介绍SAP中的表缓存在查询数据&#xff0c;更新数据时的工作情况以及对应概念。 SAP表缓存的工作 查询数据 更新数据 删除数据 表缓存的概念 表缓存技术设置属性 不允许缓冲&#xff1a; 允许缓冲&#xff0c;但已关闭&#xff1a; 缓冲已激活&#xff1a; 已…

笔记1:基于锚框(先验框)的目标检测

一、边缘框&#xff08;bounding box&#xff09; 1.1 定义 边缘框&#xff1a;真实标注的物体位置 2.1 表示方式 1、&#xff08;x1,y1)和(x2,y2) 2、&#xff08;x1,y1)和w,h 二、锚框(anchor box)/先验框&#xff08;prior bounding box&#xff09; 2.1 定义 对边缘…

webpack打包批量替换路径(string-replace-webpack-plugin插件)

string-replace-webpack-plugin 是一个用于在 webpack 打包后的文件中替换字符串的插件。它可以用于将特定字符串替换为其他字符串&#xff0c;例如将敏感信息从源代码中移除或对特定文本进行本地化处理。比如文件的html、css、js中的路径地址想批量更改一下 http://localhost:…

软件安装(详细讲解VMware虚拟机的安装及VMvare安装winServer2012)实施必用!!!

文章目录 前言&#xff1a;一、VMware虚拟机的安装1.1VMware虚拟机的安装步骤(一直下一步)&#xff1a;1.2Vmware配置虚拟机&#xff1a; 二、VMware安装winServer20122.1激活windows: 思维导图&#xff1a; 前言&#xff1a; 本编给大家详细的介绍VMware虚拟机的安装和安装wi…

自定义View绘制基础之Canvas

画布Canvas Canvas&#xff08;画布&#xff09;是一个用于绘制图形的重要类&#xff0c;它提供了一组绘图操作的方法&#xff0c;允许你在屏幕上绘制各种形状、图像和文本。下面是Canvas类的主要函数&#xff1a; 目录 一、绘制图形和图像 1.drawColor 2.drawCircle 3.dr…

Gitlab 定时备份

要求 1.为了能够备份和恢复&#xff0c;请确保你的系统上安装了Rsync #Debian/Ubauntu sudo apt-get install rsync # RHEL/Centos sudo yum install rsync 配置与备份目标机器之间的免密认证 修改gitlab配置文件 vim /etc/gitlab/gitlab.rb gitlab_rails[manage_backup_…
最新文章