博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF,Silverlight与XAML读书笔记第三十五 - 可视化效果之图像
阅读量:4329 次
发布时间:2019-06-06

本文共 2617 字,大约阅读时间需要 8 分钟。

说明:本系列基本上是《WPF揭秘》的读书笔记。在结构安排与文章内容上参照《WPF揭秘》的编排,对内容进行了总结并加入一些个人理解。

 

生成和操作多种格式的图像

WPF中的图像API大都位于System.Windows.Media.Imaging命名空间中。还有一部分定义于System.Windows.Media命名空间。

WPF的API支持的图像格式:Bitmap位图(.bmp),JPEG,TIF与TIFF,GIF,WDP(Windows Media Photo),PNG,ICO另外可以通过Windows图像组件(WIC)来扩展WPF,来支持其他图像格式。

 

BitmapSource类

BitmapSource位于PresentationCore.dll中的System.Windows.Media.Imaging命名空间。这是我们下文要介绍的图像类的抽象基类。

 

BitmapImage类

BitmapImage继承自BitmapSource,常与Image控件一起使用。使用BitmapImage而不直接使用Bitmap的Source属性的原因是可以实现如旋转等特点。

示例:

1 2     
3
4
5

FormatConvertedBitmap

FormatConvertedBitmap继承自BitmapImage,其属性说明如下,可由此看出这个类的作用 – 转换图像中颜色的深度。

  • Source:指定图像
  • DestinationFormat:目标格式,定义新的颜色深度,该属性是System.Windows.Media.Pixel类。主要包括以下几类格式:
    • Indexed1,Indexed2,Indexed4和Indexed8:分别提供基于调色板的2色,4色,16色,256色位图。
    • BlackWhite:黑白格式
    • Gray,Gray4,Gray8,Gray16和Gray32:分别提供4色,16色,256色,16位和32位灰度图像。
    • Bgr555:提供15位的颜色格式
    • Bgr565:带有6个绿色位的16位颜色格式
    • Bgb128Float:128位色图像

 

位图效果

位图效果定义于System.Windows.Media.Effects命名空间下,一共有5种,它们可以应用到如UIElement,DrawingGroup及Viewport3DVisual等对象。这些效果被应用于渲染过的光栅输出上。

下表列出了5种位图效果的效果图,及各自支持的一些属性。

效果

属性

默认值

效果图(默认值)

BevelBitmapEffect

BevelWidth:非负double类型

EdgeProfile:BulgedUp, CurvedIn, CurvedOut或Linear

LightAngle:double类型属性,表示以度为单位的角度

Relief:double类型,0(平的)到1(高的)间一个值

Smoothness:double类型,0(清楚)到1(模糊)间的值

5

Linear

135

0.3

0.2

BlurBitmapEffect

Radius:非负的double类型值

KernelType:Box或Gaussian

5

Gaussian

DropShadowBitmapEffect

Color:任何颜色(且颜色可以包含alpha通道)

Direction:double类型属性,表示以度为单位的角度

Noise:double类型,0(光滑)到1(不光滑)间的值

Opacity:double类型,0(透明)到1(不透明)间的值

ShadowDepth:非负的double类型值

Softness:double类型,0(清楚)到1(模糊)间的值

Black

315

0

1

5

0.5

EmbossBitmapEffect

LightAngle:double类型属性,表示以度为单位的角度

Relief:double类型,0到1间的一个值

45

0.44

OuterGlowBitmapEffect

GlowGolor:任何颜色(且颜色可以包含alpha通道)

GlowSize:非负的double类型值

Noise:double类型,0(光滑)到1(不光滑)间的值

Opacity:double类型,0(透明)到1(不透明)间的值

Gold

5

0

1

应用位图效果的方法很简单,只需要将目标元素的BitmapEffect属性设置为BitmapEffect任一子类的对象即可。如:

1 

WPF同样提供了一个BitmapEffectGroup类用于将多个位图效果组合在一起,BitmapEffectGroup的使用方式与普通的BitmapEffect一样,如:

1 

同一个BitmapEffect也可以被多次叠加使用:

1 

注意:位图效果的性能问题

位图效果在UI线程进行渲染而非渲染线程(前者使用软件计算,后者可借助硬件加速)。对性能的产生的影响会随着位图效果的增多,应该只在小的静态的内容中应用位图效果。

 

本文完

 

参考:

《WPF揭秘》

转载于:https://www.cnblogs.com/lsxqw2004/archive/2013/01/06/4629174.html

你可能感兴趣的文章
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>