当前位置: 首页 > article >正文

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

一、目的: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.kler.cn/a/310249.html

相关文章:

  • Linux——基础指令2 + 权限
  • 速盾:cdn和反向代理的关系是什么?
  • 速盾:游戏盾的功能和原理详解
  • 介绍几个提取视频文案的Coze插件
  • 【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作
  • C++《stack与queue》
  • 前后端联调
  • 如何建立一个Webservice WSDL的简单例子(完整例子)
  • 如何在微信小程序中实现WebSocket连接
  • JEE 设计模式
  • 黑神话悟空mac可以玩吗
  • 软考高级:嵌入式系统调度算法 AI 解读
  • OJ 组合总和
  • MySQL面试题--连续三天登录(困难)
  • Python基础(七)——PyEcharts数据分析(面向对象版)
  • fortran定义数组
  • [SAP ABAP] 修改内表数据
  • HDMI色块移动——FPGA学习笔记13
  • VulhubDC-4靶机详解
  • Linux系统性能调优技巧详解
  • 『功能项目』回调函数处理死亡【54】
  • docker基础学习
  • C++调用C# DLL之踩坑记录
  • Oracle 数据库安装和配置教程
  • 每日学习一个数据结构-红黑树
  • 电脑怎么录屏?四款录屏工具分享