一、目的: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,您可以将复杂的图形、图像和文本组合在一起,并将其作为图像资源使用。
// 创建一个 DrawingGroupDrawingGroup 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);// 将图形添加到 DrawingGroupdrawingGroup.Children.Add(rectangleDrawing);// 创建一个 DrawingImage 并将 DrawingGroup 作为其 DrawingDrawingImage drawingImage = new DrawingImage(drawingGroup);// 创建一个 Image 控件并应用 DrawingImageImage imageControl = new Image();imageControl.Source = drawingImage;
2、创建DrawingBrush,应用到Background等Brush中
DrawingBrush 是 WPF 中的一种画刷,它允许您使用 Drawing 对象来填充图形区域。通过使用 DrawingBrush,您可以将复杂的图形、图像和文本作为填充内容应用到控件或形状上。
// 创建一个 DrawingGroupDrawingGroup 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);// 将图形添加到 DrawingGroupdrawingGroup.Children.Add(rectangleDrawing);// 创建一个 DrawingBrush 并将 DrawingGroup 作为其 DrawingDrawingBrush drawingBrush = new DrawingBrush(drawingGroup);// 创建一个矩形并应用 DrawingBrushRectangle rectangle = new Rectangle();rectangle.Fill = drawingBrush;
3、创建DrawingGroup,应用到Drawing中
DrawingGroup 是 WPF 中的一个类,用于组合多个 Drawing 对象。通过使用 DrawingGroup,您可以将不同类型的 Drawing 对象(如 GeometryDrawing、ImageDrawing、GlyphRunDrawing 等)组合在一起,形成一个复杂的图形集合。然后,您可以将这个 DrawingGroup 用于绘制或作为其他绘制对象的源。
// 创建一个 DrawingGroupDrawingGroup 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);// 将图形添加到 DrawingGroupdrawingGroup.Children.Add(rectangleDrawing);// 创建一个 DrawingBrush 并将 DrawingGroup 作为其 DrawingDrawingBrush drawingBrush = new DrawingBrush(drawingGroup);// 创建一个矩形并应用 DrawingBrushRectangle rectangle = new Rectangle();rectangle.Fill = drawingBrush;
4、创建DrawingVisual,应用到DrawingContext的DrawDrawing绘制中
// 创建一个 DrawingVisual 对象DrawingVisual drawingVisual = new DrawingVisual();// 获取 DrawingContextusing (DrawingContext drawingContext = drawingVisual.RenderOpen()){// 创建一个矩形 DrawingGeometryDrawing 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 方法绘制 rectangleDrawingdrawingContext.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个人主页-哔哩哔哩视频