笔记:简介Drawing是什么,都有哪些,如何使用

news2024/9/19 8:52:18

一、目的:Drawing简介

        在 WPF 中,Drawing 是一个抽象基类,用于表示可绘制的对象。Drawing 类及其派生类提供了一种轻量级的方式来描述图形、图像和视频等内容。Drawing 对象通常用于不需要用户交互的静态内容,例如背景图像、图标和装饰性图形。

二、Drawing都有哪些


1.    GeometryDrawing:


•    用于绘制几何图形(例如矩形、圆形、多边形等)。
•    可以设置填充和边框。


2.    ImageDrawing:


•    用于绘制图像。
•    可以指定图像的源和绘制区域。


3.    VideoDrawing:


•    用于绘制视频。
•    可以指定视频的源和绘制区域。


4.    GlyphRunDrawing:


•    用于绘制文本。
•    可以指定字体、大小、颜色等。


5.    DrawingGroup:


•    用于组合多个 Drawing 对象。
•    可以应用变换、裁剪和不透明度等效果。

三、如何使用Drawing

1、创建DrawingImage,应用到ImageSource中

        DrawingImage 是 WPF 中的一个类,它允许您将 Drawing 对象转换为图像。通过使用 DrawingImage,您可以将复杂的图形、图像和文本组合在一起,并将其作为图像资源使用。

            // 创建一个 DrawingGroup
            DrawingGroup drawingGroup = new DrawingGroup();

            // 创建一个矩形
            GeometryDrawing rectangleDrawing = new GeometryDrawing();
            rectangleDrawing.Geometry = new RectangleGeometry(new Rect(0, 0, 50, 50));
            rectangleDrawing.Brush = Brushes.Blue;
            rectangleDrawing.Pen = new Pen(Brushes.Black, 1);

            // 将图形添加到 DrawingGroup
            drawingGroup.Children.Add(rectangleDrawing);
            // 创建一个 DrawingImage 并将 DrawingGroup 作为其 Drawing
            DrawingImage drawingImage = new DrawingImage(drawingGroup);

            // 创建一个 Image 控件并应用 DrawingImage
            Image imageControl = new Image();
            imageControl.Source = drawingImage;

2、创建DrawingBrush,应用到Background等Brush中

        DrawingBrush 是 WPF 中的一种画刷,它允许您使用 Drawing 对象来填充图形区域。通过使用 DrawingBrush,您可以将复杂的图形、图像和文本作为填充内容应用到控件或形状上。

            // 创建一个 DrawingGroup
            DrawingGroup drawingGroup = new DrawingGroup();

            // 创建一个矩形
            GeometryDrawing rectangleDrawing = new GeometryDrawing();
            rectangleDrawing.Geometry = new RectangleGeometry(new Rect(0, 0, 50, 50));
            rectangleDrawing.Brush = Brushes.Blue;
            rectangleDrawing.Pen = new Pen(Brushes.Black, 1);

            // 将图形添加到 DrawingGroup
            drawingGroup.Children.Add(rectangleDrawing);

            // 创建一个 DrawingBrush 并将 DrawingGroup 作为其 Drawing
            DrawingBrush drawingBrush = new DrawingBrush(drawingGroup);

            // 创建一个矩形并应用 DrawingBrush
            Rectangle rectangle = new Rectangle();
            rectangle.Fill = drawingBrush;

3、创建DrawingGroup,应用到Drawing中

        DrawingGroup 是 WPF 中的一个类,用于组合多个 Drawing 对象。通过使用 DrawingGroup,您可以将不同类型的 Drawing 对象(如 GeometryDrawing、ImageDrawing、GlyphRunDrawing 等)组合在一起,形成一个复杂的图形集合。然后,您可以将这个 DrawingGroup 用于绘制或作为其他绘制对象的源。

         // 创建一个 DrawingGroup
         DrawingGroup drawingGroup = new DrawingGroup();

         // 创建一个矩形
         GeometryDrawing rectangleDrawing = new GeometryDrawing();
         rectangleDrawing.Geometry = new RectangleGeometry(new Rect(0, 0, 50, 50));
         rectangleDrawing.Brush = Brushes.Blue;
         rectangleDrawing.Pen = new Pen(Brushes.Black, 1);

         // 将图形添加到 DrawingGroup
         drawingGroup.Children.Add(rectangleDrawing);

         // 创建一个 DrawingBrush 并将 DrawingGroup 作为其 Drawing
         DrawingBrush drawingBrush = new DrawingBrush(drawingGroup);

         // 创建一个矩形并应用 DrawingBrush
         Rectangle rectangle = new Rectangle();
         rectangle.Fill = drawingBrush;

4、创建DrawingVisual,应用到DrawingContext的DrawDrawing绘制中

            // 创建一个 DrawingVisual 对象
            DrawingVisual drawingVisual = new DrawingVisual();

            // 获取 DrawingContext
            using (DrawingContext drawingContext = drawingVisual.RenderOpen())
            {
                // 创建一个矩形 Drawing
                GeometryDrawing rectangleDrawing = new GeometryDrawing();
                rectangleDrawing.Geometry = new RectangleGeometry(new Rect(0, 0, 100, 100));
                rectangleDrawing.Brush = Brushes.Blue;
                rectangleDrawing.Pen = new Pen(Brushes.Black, 1);

                // 使用 DrawDrawing 方法绘制 rectangleDrawing
                drawingContext.DrawDrawing(rectangleDrawing);
            }

需要了解的知识点 

Drawing 类 (System.Windows.Media) | Microsoft Learn

ImageDrawing 类 (System.Windows.Media) | Microsoft Learn

GeometryDrawing 类 (System.Windows.Media) | Microsoft Learn

DrawingGroup 类 (System.Windows.Media) | Microsoft Learn

DrawingBrush 类 (System.Windows.Media) | Microsoft Learn

DrawingImage 类 (System.Windows.Media) | Microsoft Learn

System.Windows.Controls 命名空间 | Microsoft Learn

控件库 - WPF .NET Framework | Microsoft Learn

WPF 介绍 | Microsoft Learn

XAML概述 - WPF .NET | Microsoft Learn

Windows Presentation Foundation 简介 - WPF .NET | Microsoft Learn

使用 Visual Studio 创建新应用教程 - WPF .NET | Microsoft Learn

了解更多

适用于 .NET 8 的 WPF 的新增功能 - WPF .NET | Microsoft Learn

适用于 .NET 7 的 WPF 的新增功能 - WPF .NET | Microsoft Learn

System.Windows.Controls 命名空间 | Microsoft Learn

Reference Source

Sysinternals - Sysinternals | Microsoft Learn

Windows app development documentation - Windows apps | Microsoft Learn

欢迎使用 Expression Blend | Microsoft Learn

https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/?view=netdesktop-7.0&WT.mc_id=MVP_380318

https://github.com/HeBianGu

HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

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

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

相关文章

1.1 软件测试 + AI

欢迎大家订阅【软件测试】学习专栏,开启你的软件测试学习之旅! 文章目录 前言一、软件测试二、人工智能的引入 前言 人工智能的引入为软件测试带来了巨大的变革,不仅提升了测试效率和准确性,也为软件质量的保障提供了新的手段。通…

通信工程学习:什么是ONT光网络终端

ONT:光网络终端 ONT(Optical Network Terminal,光网络终端)是光纤接入网络(FTTH)中的关键设备,用于将光纤信号转换为电信号或将电信号转换为光信号,以实现用户设备与光纤网络的连接。…

华为OD机试 - 返回矩阵中非1的元素个数 - 广度优先搜索BFS(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

最长连续子序列 - 华为OD统一考试(E卷)

OD统一考试(E卷) 分值: 100分 题解: Java / Python / C 2024华为OD机试(E卷D卷C卷)最新题库【超值优惠】Java/Python/C合集 题目描述 有N个正整数组成的一个序列。给定整数sum,求长度最长的连续…

WIFI路由器的套杆天线简谈

❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代,想必大家对其都不陌生。随着科技的发展,常用的路由器上的天线也越来越多,那么问题来了:天线越多,信号越好吗?路由器…

前端mock了所有……

目录 一、背景描述 二、开发流程 1.引入Mock 2.创建文件 3.需求描述 4.Mock实现 三、总结 一、背景描述 前提: 事情是这样的,老板想要我们写一个demo拿去路演/拉项目,有一些数据,希望前端接一下,写几个表格&a…

Linux进程间通信——探索共享内存—— 剖析原理, 学习接口应用

前言:本节内容主要讲解进程间通信的, systemV版本下的共享内存。 共享内存,顾名思义, 其实就是一块内存, 它不同于管道是一个文件。 所以它的传输速度是很快的。 因为管道是文件,有缓冲区, 而共…

Day99 代码随想录打卡|动态规划篇--- 01背包问题

题目(卡玛网T46): 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&am…

LeRobot - 让现实机器人更易学

文章目录 一、关于 LeRobot特点模拟环境中预训练模型的示例 致谢教程 - Getting Started with Real-World Robots 二、安装三、Walkthrough1、可视化数据集2、LeRobotDataset的格式3、评估预先训练的策略4、训练你自己的政策复制最先进的(SOTA) 四、贡献…

Vue3 中 Aos 动画同时触发的解决办法

文章目录 问题现象解决之后的效果解决办法问题猜测 问题现象 我总共有四行数据,每一行都是一个动画,但是触发第一个之后其他三个也都触发了 我想要的效果是:动画从底部出现的时候触发一个动画,不要都触发掉 解决之后的效果 解决…

智慧卫生间系统:引领公共卫生间管理的新时代@卓振思众

随着城市化进程的加快,公共卫生间的使用频率不断增加。如何提升公共卫生间的使用体验、管理效率以及卫生水平,已成为各地政府和管理者关注的焦点。智慧卫生间系统应运而生,成为解决这一问题的重要工具。它结合了物联网技术和智能管理理念&…

四、Cookie 和 Session

文章目录 1. Cookie 饼干1.1 什么是 Cookie?1.2 如何创建 Cookie1.3 服务器如何获取 Cookie1.4 Cookie 值的修改1.5 浏览器查看 Cookie1.6 Cookie 生命控制(指浏览器中Cookie的存在时间)1.7 Cookie 有效路径 Path 的设置 2. Session 会话2.1 什么是 Ses…

Canopen-pn有线通信标准在汽车制造中至关重要

电子元件越来越多地被集成到车辆中,从而实现与物联网世界的连接。该行业中主要的高速串行接口方法包括控制器局域网 (CAN) 总线 。CAN 是运输应用中使用的一种强大的总线标准。它旨在允许微控制器(MCU) 和相关组件与彼此的应用程序进行通信。这无需系统具有主机即可…

从入门到精通,带你探索适合新手的视频剪辑工具

用视频来分享生活已经变成越来越多人的一种习惯,很多时候视频并不能一镜到底,所以还需要一些的修改、剪辑操作,那么这次我将介绍几款视频剪辑工具,希望能够让你分享的道路更加通畅。 1.FOXIT视频剪辑 连接直达>>https://w…

【项目设计】Facial-Hunter

目录 一、项目介绍 二、开发环境以及技术 三、项目架构设计 3.1 项目总体架构 3.2 客户端架构 3.3 主服务端架构 3.4 处理服务端架构 3.5 数据库设计 四、FaceNet 五、代码实现 一、项目介绍 该项目是基于深度学习与负载均衡的人脸识别系统 该项目主要由三个部分组…

【Elasticsearch系列十二】聚合-电视案例

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

反射的相关内容

目录 一、什么是反射 二、为什么会有反射 三、反射是如何工作的 获取类信息的三种方式: 例: 四、获取类信息并调用 1.获取 (1)获取变量 获取全部类信息 获取public修饰的 获取指定某一个 (2)…

【新手上路】衡石分析平台使用手册-租户管理

租户管理​ 衡石系统支持服务一个平台方和多个企业客户的租户模式,平台方管理租户,为租户提供数据,租户在系统内进行数据分析。 衡石系统增加工作空间的设计,在平台方和租户之间提供单向的传递通道,平台厂商可以轻松…

C++map,set,multiset,multimap详细介绍

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set set的介绍 set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器 4. set的容量 5. set的修改操作 6. set的使用举例 ​3.2 map map的介绍 map的使用 1. map的模板参数声明 2. map的构造 …

实例讲解电动汽车钥匙ON挡上下电控制策略及Simulink建模方法

在电动汽车VCU开发中,上下电控制是其中一个核心控制内容,也是其他控制功能的基础,而钥匙ON挡上下电又是整车上下电的基础。本文介绍电动汽车钥匙ON挡上下电的控制策略及Simulink建模方法。 目录 一、整车高压原理 二、钥匙ON挡上下电控制策…