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

WPF图形图像相关类

BitmapMetadata类:

继承自抽象类ImageMetadata,包含图像的原数据信息,如相机型号、图像修改程序名称、拍照日期、拍照地点等。ImageSoure类包含ImageMetadata类型的Metadata属性。由于ImageMetadata是抽像类,所以提取信息时用它的子类BitmapMetadata。如:

BitmapMetadata metaData=img.Source.Metadata as BitmapMetadata;

 MessageBox.Show(metaData.CameraModel.ToString());

ImageSource类:

表示具有宽度、高度和图像原数据的对象。该类为抽象类,派生出DrawingImage和BitmapSource类型。

DrawingImage的内容是一个Drawing,用于在Image元素中驻留图画。

BitmapSource也是抽象类,其内容是位图,具有Dpi、像素高宽、像素格式等属性。

BitmapImage类:

BitmapImage具体实现BitmapSource类,主要目的是支持可扩展应用程序标记语言 (XAML)语法并引入了其他属性,比如UriSource,和从Uri创建。

RenderTargetBitmap类:

另一个继承自BitmapSource的类,主要目的是将Viusal对像转换为位图。

Drawing类: 

表示2D图画的抽象类,它包含了显示矢量图形或位图所需要的信息。派生GeometryDrawing、GlyphRunDrawing、ImageDrawing、VideoDrawing、DrawingGroup。

Drawing对象是轻量级对象,它不支持布局、输入和焦点,用它显示几何形状、图像、文本和媒体,具有性能优势。

继承自Drawing的类不是元素,不能放置到用户界面中。为了显示Drawing,需要DrawingImage、DrawingBrush或DrawingVisual。 DrawingImage前面已说。DrawingBrush的父类是Brush,用它封装Drawing后,就可以用来绘制任何表面。DrawingVisual是低级的可视化对象,不具有真正的元素开销。

Visual类:

Visual对象是WPF核心对象,其主要作用是提供呈现支持。用户界面控件(UIElement)、Visual对像集合(ContainerVisual,其最重要的子类为DrawingVisual)都派生自Visual类。Visual有以下能力:输出显示、坐标变换、区域剪裁、命中测试、边框计算。

DrawingVisual类:

DrawingVisual是一种可视对象,可用于在屏幕上呈现矢量图形,它显示的内容由系统持久化。

为了使用DrawingVisual对象,您需要为对象创建一个宿主容器。宿主容器对象必须派生自FrameworkElement类,该类提供了DrawingVisual类不支持的布局和事件处理支持。宿主容器对象不显示任何可视属性,因为它的主要目的是包含子对象。

Brush类:

Brush是抽像类,用于绘制图形对象的对象。派生自Brush 的类描述如何绘制区域。

Brush类继承自Freezable,支持更改通知,如果改变了画刷,任何使用画刷的元素都会重绘自身。

Brush支持Opacity。

Brush派生类型:SolidColorBrush(单一颜色)、LinearGradientBrush(渐变)、RadialGradientBrush(径向渐变)、ImageBrush(可拉伸、缩放或平铺的图像)、DrawingBrush(使用Drwing对象)、VisualBrush(使用Visual对象)、BitmapCacheBrush(从Visual对像缓存的内容绘制区域)

DrawingBrush类:

DrawingBrush继承自TileBrush,很适合平铺,注意改变其Stretch属性,调整其Viewport大小!

 

--------------------------------------------------

顺便提下Image、Bitmap和Graphics

System.Drawing空间有Image 、Bitmap和Graphics,是winform中常用的类。

Image代表图像,是个抽象类。
Bitmap派生于Image,代表具体的位图(不是矢量图),bmp、jpg、gif、png、tif等都是位图的格式。

Graphics简单理解就是画板,提供绘画工具,如笔刷、颜料。

 

转载于:https://www.cnblogs.com/TianPing/p/10390009.html

相关文章:

  • [清华集训2016]你的生命已如风中残烛——组合数学
  • MySQL--各版本DDL 操作总结
  • 将matlab数据保存为excel文件
  • 全程软件测试:软件测试的标准观点
  • 秋季学习总结
  • idou老师教你学Istio 23 : 如何用 Istio 实现速率限制
  • flex弹性布局心得
  • 机器学习KNN实例之数字识别
  • Jeesite 代码生成
  • IP地址子网划分
  • OpenStack 虚机网卡的创建过程
  • 使用 FFT 分析周期性数据
  • SpringBoot 通用Error设计
  • 浅谈斜率优化dp
  • emacs
  • [译]Python中的类属性与实例属性的区别
  • “大数据应用场景”之隔壁老王(连载四)
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • CAP 一致性协议及应用解析
  • css属性的继承、初识值、计算值、当前值、应用值
  • C语言笔记(第一章:C语言编程)
  • Elasticsearch 参考指南(升级前重新索引)
  • Joomla 2.x, 3.x useful code cheatsheet
  • log4j2输出到kafka
  • ReactNative开发常用的三方模块
  • Redis中的lru算法实现
  • Travix是如何部署应用程序到Kubernetes上的
  • Yeoman_Bower_Grunt
  • 阿里研究院入选中国企业智库系统影响力榜
  • 编写高质量JavaScript代码之并发
  • 给新手的新浪微博 SDK 集成教程【一】
  • 观察者模式实现非直接耦合
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊聊directory traversal attack
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 设计模式走一遍---观察者模式
  • 首页查询功能的一次实现过程
  • 思维导图—你不知道的JavaScript中卷
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 通信类
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #数学建模# 线性规划问题的Matlab求解
  • (1)(1.9) MSP (version 4.2)
  • (NSDate) 时间 (time )比较
  • (Python) SOAP Web Service (HTTP POST)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .equals()到底是什么意思?
  • .form文件_一篇文章学会文件上传
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net Core和.Net Standard直观理解
  • .Net Remoting常用部署结构