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

news/2024/9/19 3:36:15 标签: 笔记, C#, wpf

一、目的: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.niftyadmin.cn/n/5664913.html

相关文章

C语言 ——— 编写函数,判断一个整数是否是回文整数

目录 题目要求 代码实现 题目要求 编写一个函数,用来判断一个整数是否是回文整数,如果是回文整数就返回 true ,如果不是就返回 false 举例说明: 输入:121 输出:true 输入:1321 输出&#xf…

MySQL系列—12.Undo log

1、概念 DML 操作导致数据变化 , 将变化前的记录写入 Undo 日志。 作用 用于记录更改前的一份 copy ,在操作出错时,可以用于回滚、撤销还原,只将数据库 逻辑地恢复到原来的样子 你 插入一条记录时,至少要把这条记录的主键值记下来…

【自学笔记】支持向量机(2)——核函数

引入 核函数的功能是将一组数据映射到更高维的特征空间,这样可以让在低维无法线性分类的数据能够在高维空间下被分类。   可以证明,如果原始数据是有限的维度,那么一定存在一个高维特征空间使得样本线性可分。 文章内容由《机器学习》相关内…

深度学习-点击率预估-研究论文2024-09-14速读

深度学习-点击率预估-研究论文2024-09-14速读 1. Deep Target Session Interest Network for Click-Through Rate Prediction H Zhong, J Ma, X Duan, S Gu, J Yao - 2024 International Joint Conference on Neural Networks, 2024 深度目标会话兴趣网络用于点击率预测 摘…

JAVA基础:正则表达式,String的intern方法,StringBuilder可变字符串特点与应用,+连接字符串特点

1 String中的常用方法2 1.1 split方法 将字符串按照指定的内容进行分割,将分割成的每一个子部分组成一个数组 分割内容不会出现在数组中 实际上该方法不是按照指定的简单的符号进行分割的,而是按照正则表达式进行分割 1.2 正则表达式 用简单的符号组合…

linux-系统管理与监控-设备管理

Linux 系统管理与监控:设备管理 在 Linux 系统中,设备管理是操作系统管理硬件资源的重要部分。通过设备管理,系统能够与计算机的硬件组件(如存储设备、网络接口、输入输出设备等)进行交互,并提供一个抽象的…

企业架构如何推动组织中成功的数字化转型

在当今的数字世界中,成功数字化转型的需求比以往任何时候都更加重要。公司越来越多地参与数字化转型,以保持相关性和竞争力。然而,数字化转型不仅仅是技术更新。它需要一种战略方法来整合业务流程、模型和目标。这就是企业架构发挥作用的地方…

基于open-gpu-kernel-modules的p2p vram映射bar1提高通信效率

背景 bar1 Base Address Register 1 用于内存映射的寄存器,定义了设备的内存映射区域,BAR1专门分配给gpu的一部分内存区域,允许cpu通过pcie总线直接访问显存VRAM中的数据。但bar1的大小是有限的,在常规的4090上,bar1只…