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. iOS Hardware Guide

    来自U3D文档 Hardware models The following list summarizes iOS hardware available in devices of various g ...

  2. ibernate 配置数据库方言

          在开发hibernate的程序时,需要进行SessionFactory的配置,简单地说,也就是建立与数据库之间连接的配置,在hibernate中一般使用xml文件来进行配置,但是在该文件的 ...

  3. Redis cli 操作

    备份 root@575e8088b5fb:/data# redis-cli LASTSAVE(integer) 1500273743root@575e8088b5fb:/data# redis-cli ...

  4. 兼容当前五大浏览器的渐变颜色背景gradient的写法

    <style type="text/css" media="screen"> #gradient { width: 200px; height: 2 ...

  5. intellij idea 添加模板语句

    1.说明 在intellij idea 中有很多模板语句可有使用,比如:输入sout,就可以直接生成 System.out.println();代码, 输入psvm,就可以直接生成main方法,类似这 ...

  6. C#语法基础

    泛型 1.default(T)可以返回T类型的空值,因为你不知道T是值类型还是引用类型,所以别擅自用null 2.泛型约束 很多时候我们不希望使用者太过自由 我们希望他们在使用我们设计的泛型类型时 不 ...

  7. 用NBU无法还原数据库到ASM磁盘

    描述:用NBU无法还原数据库到ASM磁盘,却可以还原到数据库本地磁盘 错误提示: ORA-15025: could not open disk "/dev/mapper/DATA1" ...

  8. C++调试帮助

    assert预处理宏 assert是一种预处理宏,所谓预处理其实是一个预处理变量,其行为类似于内联函数,assert宏使用一个表达式作为其条件: assert(expr) 首先是对expr进行求值,如 ...

  9. 6.ZigZag Conversion(Graph, traverse)

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  10. 创建第一个Maven项目

    -----------------------siwuxie095                                     创建第一个 Maven 项目         1.打开 Ec ...