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. 关于gevent的一些理解(一)

    前言:gevent是python的一个并发框架,以微线程greenlet为核心,使用了epoll事件监听机制以及诸多其他优化而变得高效.而且其中有个monkey类, 将现有基于Python线程直接转化 ...

  2. getattr()函数详解

    setattr(object,name,value): 作用:设置object的名称为name(type:string)的属性的属性值为value,属性name可以是已存在属性也可以是新属性. get ...

  3. java多线程实例(2)

    public class ThreadDemo05 { public static void main(String args[]) { // 四个售票点应该控制同一个资源 Demo d = new ...

  4. Island Transport

    Island Transport http://acm.hdu.edu.cn/showproblem.php?pid=4280 Time Limit: 20000/10000 MS (Java/Oth ...

  5. PAT L3-008 喊山(广搜)

    喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的.原来它是彝族先民用 ...

  6. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  7. gridiew列求和,表的列求和,表的记录数,时间段查询

    下面求的是gridview中第5列的值,并在lable1中显示 protected void Page_Load(object sender, EventArgs e)    {        int ...

  8. swift VFL - 父视图是scrollview 注意点

    1. scrollview 添加 子控件, 必须设置 宽度和高度, 他自己无法撑满2. scrollview的子空间的约束  只能相对于 左边 的顶部, 无法设置右边和底部的约束 3. 设置最小距离 ...

  9. oracle JDeveloper学习

    1>oracle JDeveloper官方地址,官方的学习资源包括视频和教材,很全面,很多不知道从和入手. 2>oracle JDeveloper 12C 教程,一步步学习jdev,可以此 ...

  10. CMakeList 编写规则 -1

    CMAKE 常见指令 CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(XXX) SET(CMAKE_BUILD_TYPE Release) SET(CMAKE_ ...