笔记:简介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个人主页-哔哩哔哩视频