博客
关于我
精通C#---WPF图形呈现服务
阅读量:734 次
发布时间:2019-03-21

本文共 1836 字,大约阅读时间需要 6 分钟。

WPF(Windows Presentation Framework,Windows展示框架)是用于开发Windows基于定位的应用程序的强大工具。它采用保留模式图形,即便图形被隐藏,它们仍然存在于内存中。这使得WPF在处理图形数据时更加高效和灵活。

1. WPF图形呈现方式

WPF提供了多种形状呈现选项:

  • 形状:适合交互式图形,如System.Windows.Shapes.Shape
  • 绘图和几何图形:适合非交互,矢量化的图形,如System.Windows.Media.Drawing
  • 可视化:适合大量复杂图形,如System.Windows.Media.Visual

2. 使用形状呈现图形

在WPF中,Shape controls(如Ellipse、Rectangle和Line等)是绘图的基础。开发者可以通过设置ShapeDefiningGeometryStretchStroke等属性来定制形状的外观和行为。

3. Path

Path在WPF中是用来绘制矢量图形的核心元素,可通过Geometry集合呈现复杂图形。Geometry派生类(如LineGeometryEllipseGeometry等)可以单独表示图形片段。需要注意的是,Path并不只是用于矢量图形,还可以结合GeometryGroup来实现更复杂的图形组合。

4. 画刷与画笔

WPF提供了多种画刷类型:

  • DrawingBrush:适用于基于GeometryDrawing的绘图。
  • ImageBrush:使用图像文件进行图形填充。
  • GradientBrush:包括LinearGradientBrushRadialGradientBrush,用于渐变填充。
  • VisualBrush:绘制基于Visual对象的复杂图形。

通过设置StrokeThicknessLineJoinLineCap等属性,可以自定义画笔的外观,例如设定笔尖类型和线条连接方式。

5. 图形变换

WPF支持多种图形变换方法:

  • 矩阵变换(MatrixTransform):用于对2D平面进行缩放、旋转和平移。
  • 旋转和缩放(RotateTransform、ScaleTransform):分别用于围绕指定点进行旋转和缩放。
  • 扭曲(SkewTransform):改变坐标系的形状。
  • 翻转和平移(TransformGroup):将多个变换组合在一起应用。

变换可以在布局管理之前(LayoutTransform)或之后(RenderTransform)应用。

6. 绘图与几何图形

WPF提供了丰富的绘图选项,尤其是Drawing类。

  • GeometryDrawing:用于轻量级现象图形呈现。
  • GlyphRunDrawing:用于显示文本图形。
  • ImageDrawing:用于在矩形范围内呈现图像或图形集合。
  • VideoDrawing:支持播放音频或视频内容。

需要注意的是,Drawing对象不继承UIElement,因此它们不能直接作为UI元素呈现,除非通过DrawingVisualDrawingImage等容器进行显示。

7. DrawingBrush

DrawingBrush是WPF中常用的绘图和图形填充工具。通过设置DrawingGeometryPenBrush属性,可以创建富士桉树的可见图形。例如,以下XAML代码展示了一个带渐变填充的椭圆:

...

8. 可视化层呈现

为了实现高度自定义的可视化呈现,WPF提供了Visual类及其派生类,如DrawingVisualViewport3DVisualContainerVisual。这些类允许开发者在完全由代码控制的视觉层中呈现图形,适用于高性能和高度定制化的应用场景。

9. DrawingVisual

使用DrawingVisual进行图形呈现是一个高效的做法。通过获取DrawingContext,开发者可以直接在视觉层中绘制图形数据。重要的是需要重写FrameworkElement的虚方法,确保容器能够正确解析和呈现自定义图形。

通过以上方法,开发者可以充分利用WPF的强大功能来实现高效、灵活的图形呈现,满足各种应用需求。

转载地址:http://ngmgz.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 深度学习检测小目标常用方法
查看>>
Opencv中KNN背景分割器
查看>>
OpenCV中基于已知相机方向的透视变形
查看>>
OpenCV中的监督学习
查看>>
opencv中读写视频
查看>>
opencv之cv2.findContours和drawContours(python)
查看>>
opencv之namedWindow,imshow出现两个窗口
查看>>
opencv之模糊处理
查看>>
Opencv介绍及opencv3.0在 vs2010上的配置
查看>>
OpenCV使用霍夫变换检测图像中的形状
查看>>
opencv保存图片路径包含中文乱码解决方案
查看>>
OpenCV保证输入图像为三通道
查看>>
OpenCV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
opencv图像分割2-GMM
查看>>
opencv图像分割3-分水岭方法
查看>>
opencv图像切割1-KMeans方法
查看>>
OpenCV图像处理篇之阈值操作函数
查看>>
OpenCV图像的深浅拷贝
查看>>
OpenCV学习(13) 细化算法(1)(转)
查看>>