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简单理解就是画板,提供绘画工具,如笔刷、颜料。
WPF图形图像相关类的更多相关文章
- 借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制
原文:借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制 本文所示例子是借助第三方设计软件,制作复杂的矢量图形,转成与XAML酷似的SVG,再转换成xaml而实现的. 这 ...
- WPF 位图处理相关类
位图的存储方式 开始之前,先了解下位图的存储方式 位图的像素都分配有特定的位置和颜色值.每个像素的颜色信息由RGB组合或者灰度值表示,根据位深度,可将位图分为1.4.8.16.24及32位图像等.每个 ...
- C# .NET开发图形图像程序时提示"GDI+ 中发生一般性错误"
今天突然收到一封信,说我那个极度复杂的Marshal的问题被解决了(http://www.cnblogs.com/hotcan/archive/2005/01/12/91007.html).顿时感觉好 ...
- 超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...
- C#_GDI+详细教程(图形图像编程基础)
第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1 GDI+绘图基础 编写图形程序时需要使用GDI( ...
- WPF自学入门(九)WPF自定义窗口基类
今天简单记录一个知识点:WPF自定义窗口基类,常用winform的人知道,winform的窗体继承是很好用的,写一个基础窗体,直接在后台代码改写继承窗体名.但如果是WPF要继承窗体,我个人感觉没有理解 ...
- [转]超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Gr ...
- WPF 图形绘制 及各种线帽、箭头的实现
原文:WPF 图形绘制 及各种线帽.箭头的实现 /// <summary> /// 矩形类 /// </summary> public sealed ...
- GDI+图形图像技术1
System.Drawing命名空间提供了对GDI+基本图形功能的访问,其中一些子命名空间中提供了更高级的功能. GDI+由GDI发展而来,是Windows图形显示程序与实际物理设备之间的桥梁. GD ...
随机推荐
- tensorflow笔记之学习率设置
在使用梯度下降最小化损失函数时,如果学习率过大会导致问题不能收敛到最优解,学习率过小,虽然可以收敛到最优解,但是需要的迭代次数会大大增加,在Tensorflow中,可以用指数衰减法设置学习率,tf.t ...
- Haskell语言学习笔记(63)Dicidable
Dicidable class Divisible f => Decidable f where lose :: (a -> Void) -> f a choose :: (a -& ...
- 常用类一一基本数据类型的包装类(WrapperClass)一一Byte Short nteger Long Float Double Character Boolean
为什么需要包装类? JAVA是支持跨平台的.可以在服务器 也可以在手机上运行 基本数据类型 在栈中 效率更高 包装类 将数据类型转换成对象 在 堆中 利于操作 package cn.bjsxt.w ...
- JSP技术复习
JSP是一种运行在服务器端的脚本语言,是用来开发动态网页的技术,它是Java Web程序的开发重要技术 JSP页面主要由HTML和JSP代码构成,JSP代码是通过"<%"和& ...
- JSP复习(part 3 )
3.4.4 request对象提供了一些用来获取客户信息的方法,利用这些方法,可以获取客户端的IP地址 协议等有关信息 3.5 request对象和response对象相对应,用于响应客户请求,由服务 ...
- 求数组中的逆序对的数量----剑指offer36题
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数: 如数组{7,5,6,4},逆序对总共有5对,{7,5},{7,6},{7, ...
- c#数和二叉树
树(Tree)是 n(n≥0)个相同类型的数据元素的有限集合.树中的数据元素叫结点(Node).n=0 的树称为空树(Empty Tree):对于 n>0 的任意非空树 T 有: (1)有且仅有 ...
- 'Microsoft.VisualStudio.Editor.Implementation.EditorPackage' package did not load correctly
Visual Studio 2012 Ultimate Removing "C:\Users\UserName\AppData\Local\Microsoft\VisualStudio\11 ...
- Ansible develop module
def cnf(action,configs,path): message = "Modify %s\n" %path changed = False if action == & ...
- redis安装和命令使用
前言: redis是一个key-value的存储系统,value支持string.list.set.zset.hash五种类型,且支持数据的本地存储 一.安装redis 前提:linux下需要安装 ...