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图画的抽象类,它包含了显示矢量图形或位图所需要的信息。派生GeometryDrawingGlyphRunDrawingImageDrawingVideoDrawingDrawingGroup

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简单理解就是画板,提供绘画工具,如笔刷、颜料。

WPF图形图像相关类的更多相关文章

  1. 借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制

    原文:借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制 本文所示例子是借助第三方设计软件,制作复杂的矢量图形,转成与XAML酷似的SVG,再转换成xaml而实现的. 这 ...

  2. WPF 位图处理相关类

    位图的存储方式 开始之前,先了解下位图的存储方式 位图的像素都分配有特定的位置和颜色值.每个像素的颜色信息由RGB组合或者灰度值表示,根据位深度,可将位图分为1.4.8.16.24及32位图像等.每个 ...

  3. C# .NET开发图形图像程序时提示"GDI+ 中发生一般性错误"

    今天突然收到一封信,说我那个极度复杂的Marshal的问题被解决了(http://www.cnblogs.com/hotcan/archive/2005/01/12/91007.html).顿时感觉好 ...

  4. 超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...

  5. C#_GDI+详细教程(图形图像编程基础)

    第7章  C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1  GDI+绘图基础 编写图形程序时需要使用GDI( ...

  6. WPF自学入门(九)WPF自定义窗口基类

    今天简单记录一个知识点:WPF自定义窗口基类,常用winform的人知道,winform的窗体继承是很好用的,写一个基础窗体,直接在后台代码改写继承窗体名.但如果是WPF要继承窗体,我个人感觉没有理解 ...

  7. [转]超全面的.NET GDI+图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Gr ...

  8. WPF 图形绘制 及各种线帽、箭头的实现

    原文:WPF 图形绘制 及各种线帽.箭头的实现  /// <summary>     /// 矩形类     /// </summary>     public sealed ...

  9. GDI+图形图像技术1

    System.Drawing命名空间提供了对GDI+基本图形功能的访问,其中一些子命名空间中提供了更高级的功能. GDI+由GDI发展而来,是Windows图形显示程序与实际物理设备之间的桥梁. GD ...

随机推荐

  1. inline和inline-block的间隙问题

    我们在前端布局的时候,会偶尔发现,在具有inline/inline-block属性的元素间存在一小段间隙,网上有些文章说这个间隙是6px,但我觉得应该是一个空格的宽度. 这里以inline-block ...

  2. YAML描述与Python的对应关系

    YAML是"YAML Ain't a Markup Language"的首字母缩写,其语法简单,结构通过空格来展示,(列表)项目使用"-"来代表,(字典)键值对 ...

  3. 在JSP中,使用get提交方式出现乱码时,为什么要使用new String(s.getBytes("iso-8859-1"),"utf-8");?

    最近在学JSP,在学习处理get方式提交数据出现乱码问题的时候,对其中的一个解决方法new String(s.getBytes("iso-8859-1"),"utf-8& ...

  4. python-最好大学排名

    # -*- coding: utf-8 -*-"""Created on Mon Apr 3 09:37:52 2017 @author: zuihaodaxuepaim ...

  5. springboot 使用的配置

    1,控制台打印sql logging: level: com.sdyy.test.mapper: debug 2,开启驼峰命名 mybatis.configuration.map-underscore ...

  6. Centos7 創建快捷方式

    usr/share/applications 創建文件 Gogland.desktop [Desktop Entry]Version=1Type=ApplicationName=GoglandGene ...

  7. Ansible Playbook Conditionals

    通常,play的结果可能取决于变量的值,facts(有关远程系统的知识)或先前的任务结果. 在某些情况下,变量的值可能取决于其他变量. 此外,可以创建其他组,以根据主机是否与其他条件匹配来管理主机. ...

  8. Conductor Server

    安装 要求 数据库:Dynomite               https://github.com/Netflix/dynomite 索引后端: Elasticsearch 2.x    http ...

  9. fiddler 抓取 逍遥安卓模拟器 https包

    1.打开fiddler,进行相关设置 Tools--Fiddler Options 接下来进行客户端网络配置 1 查看电脑ip地址,ipconfig 逍遥游模拟器中使用自带的浏览器,访问192.168 ...

  10. ECMAScript5新特性之获取对象特有的属性

    'use strict'; // 父类 function Fruit(){ } Fruit.prototype.name = '水果'; // 子类 function Apple(desc){ thi ...