概述

本文将综合前面几篇关于图形图像处理的技术,如画刷、半透明遮罩、Transform等,实现一个水中倒影效果的示例。

Step 1:素材准备

最终我们实现的效果图将会如下所示:

先准备一张图片,这里我使用了一张液晶显示器的图片:)

Step 2:创建图片

首先我们创建一个图片,使用Image控件,并进行定位

Canvas Background="#000000">Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image>
Canvas>

运行后应该看起来如下所示:

Step 3:创建倒影

复制一张图片,使其位置与原始图片一样,然后我们使用ScaleTransform进行创建图片的倒影,这时图片已经翻转到了屏幕的外面,可以通过调节Canvas.Top进行调节,或者使用TranslateTransform:

Canvas Background="#000000">Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image>Image Canvas.Top="20" Canvas.Left="182" Source="a.png" Opacity="0.4">Image.RenderTransform>TransformGroup> ScaleTransform ScaleY="-1">ScaleTransform> TranslateTransform Y="320">TranslateTransform> TransformGroup> Image.RenderTransform> Image> Canvas>

运行后看起来如下所示:

Step 4:半透明遮罩

利用我们在图片处理一文介绍过的OpacityMask属性实现半透明遮罩,使其看起来更加像倒影:)

Canvas Background="#000000">Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image>Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image.RenderTransform>TransformGroup> ScaleTransform ScaleY="-1">ScaleTransform> TranslateTransform Y="320">TranslateTransform> TransformGroup> Image.RenderTransform> Image.OpacityMask> LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0.0"> GradientStop Offset="0.0" Color="#00000000" /> GradientStop Offset="1.0" Color="#FF000000" /> LinearGradientBrush> Image.OpacityMask> Image> Canvas>

运行后效果如下,倒影图片显示出了淡出效果:

Step 5:进一步扭曲倒影

我们对倒影图片做进一步的扭曲,用ScaleTransform来实现,使其在Y轴上做一些缩小,从1修改为0.75,达到扭曲的效果,并重新调整位置:

Canvas Background="#000000">Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image>Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image.RenderTransform>TransformGroup> ScaleTransform ScaleY="-0.75">ScaleTransform>  TranslateTransform Y="280">TranslateTransform> TransformGroup> Image.RenderTransform> Image.OpacityMask> LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> GradientStop Offset="0.0" Color="#00000000" /> GradientStop Offset="1.0" Color="#FF000000" /> LinearGradientBrush> Image.OpacityMask> Image> Canvas>

运行后效果如下:

Step 6:斜化倒影

我们对倒影做进一步的斜化,而不是垂直倒影,使用SkewTransform来实现,并重新调整倒影位置:

Canvas Background="#000000">Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image>Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image.RenderTransform>TransformGroup> ScaleTransform ScaleY="-0.75">ScaleTransform> SkewTransform AngleX="-15">SkewTransform> TranslateTransform Y="280" X="-30">TranslateTransform> TransformGroup> Image.RenderTransform> Image.OpacityMask> LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> GradientStop Offset="0.0" Color="#00000000" /> GradientStop Offset="1.0" Color="#FF000000" /> LinearGradientBrush> Image.OpacityMask> Image> Canvas>

运行后效果应该如下所示:

Step 7:进一步淡化倒影

为了使倒影更加逼真,我们最后再对倒影做点修饰,进一步淡化倒影,调整倒影的Opacity属性。

Canvas Background="#000000">Image Canvas.Top="20" Canvas.Left="182" Source="a.png">Image>Image Canvas.Top="20" Canvas.Left="182" Source="a.png" Opacity="0.4">Image.RenderTransform>TransformGroup> ScaleTransform ScaleY="-0.75">ScaleTransform> SkewTransform AngleX="-15">SkewTransform> TranslateTransform Y="280" X="-30">TranslateTransform> TransformGroup> Image.RenderTransform> Image.OpacityMask> LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> GradientStop Offset="0.0" Color="#00000000" /> GradientStop Offset="1.0" Color="#FF000000" /> LinearGradientBrush> Image.OpacityMask> Image> Canvas>

最后运行后整体效果如下所示:

这样就完成了一个水中倒影的示例,大家可以充分发挥自己的创意,做出更炫更酷的效果。

结束语

本文综合运用前面几篇关于图形图像处理的技术,包括画刷、半透明遮罩、以及几种基本的Transform做了一个简单的水中倒影示例,你可以从这里下载本文示例代码。

第31课 图形图像综合实例:实现水中倒影效果相关推荐

  1. 一步一步学Silverlight 2系列(31):图形图像综合实例—实现水中倒影效果

    Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ir ...

  2. 一步一步学Silverlight 2系列(31):图形图像综合实例—实现水中倒影效果_转载...

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  3. 一步一步学Silverlight 2系列(32):图形图像综合实例—“功夫之王”剧照播放_转载...

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  4. qtabwidget设置表头_Qt GUI图形图像开发之QT表格控件QTableView,QTableWidget复杂表头(多行表头) 及冻结、固定特定的行的详细方法与实例...

    我们在开发过程中对于表格使用频率还是挺高的,使用QT框架开发时候我们使用QTableView或者QTableWidget创建表格. 其中表格分为 表格头与表格体: 对于简单地表格,我们可以设置表头来满 ...

  5. 视频教程-图形图像-Adobe PhotoshopCS6超速入门,一节课学会PS [实用技能]-其他

    图形图像-Adobe PhotoshopCS6超速入门,一节课学会PS [实用技能] 全栈工程师,曾担任多家互联网公司技术总监.运营经理,在技术与运营方面积累了大量实战经验,同时也是清华大学出版社特约 ...

  6. 图形图像-Adobe PhotoshopCS6超速入门,一节课学会PS [实用技能]-韦语洋(Lccee)-专题视频课程...

    图形图像-Adobe PhotoshopCS6超速入门,一节课学会PS [实用技能]-44130人已学习 课程介绍         该视频为"Photoshop CS6视频教程"C ...

  7. tablewidget 多行表头_Qt GUI图形图像开发之QT表格控件QTableView,QTableWidget复杂表头(多行表头) 及冻结、固定特定的行的详细方法与实例...

    我们在开发过程中对于表格使用频率还是挺高的,使用QT框架开发时候我们使用QTableView或者QTableWidget创建表格. 其中表格分为 表格头与表格体: 对于简单地表格,我们可以设置表头来满 ...

  8. 计算机能处理字符音频视频吗,多媒体技术是计算机综合处理图形图像、文字、音频和视频等多种信息及其存储与传输的技术,可以分为_____和_____两大部分。.docx...

    1. 多媒体技术是计算机综合处理图形图像.文字.音频和视频等多种信息及其存储与传输的技术,可以分为_____和_____两大部分. A.多媒体硬件技术和软件技术 2. 下列选项不属于颜色的三要素的是( ...

  9. 计算机图形图像项目教程素材,案例任务驱动法在图形图像教学中的运用

    摘要:案例任务驱动教学实际上是案例教学与任务驱动教学相结合的一种教学方法,其中任务驱动作为一条主线贯穿课堂教学的始终,起到组织教学的作用,具体教学过程以案例为基础而展开.通过对该方法在<Phot ...

最新文章

  1. 【骚气的动效】外发光涟漪波纹动画、向外辐射动画效果,通常用于地图上面某一个扩散点效果
  2. B1091 N-自守数 (15分)
  3. DataTable / DataSet 与 xml 的相互转换
  4. GoldenGate安装配置
  5. 后勤管理系统_充满“智慧”的后勤管理系统是什么样的?
  6. 一文详解「队列」,手撸队列的3种方法!
  7. Android 系统(224)---如何不显示开机SIM卡欢迎语
  8. 用JavaScript编写COM组件的步骤
  9. c语言 dll库是线程安全吗,vsprintf是线程安全的吗?解决思路
  10. kali扫描内网ip_kali linux 如何查找局域网ip
  11. 遭遇nat.exe,socks.exe,USP10.dll,BOSC.dll,kb080387.CNT,~ctwxw.txt等2
  12. c语言中指数常量注意什么意思,C语言入门知识:常量
  13. CPU内部架构与工作原理
  14. #后疫情时代的新思考#AI助力,“无接触”服务加速金融数字化转型丨数据猿公益策划...
  15. mysql mtq_mysql高级复习 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  16. oenwrt 进不了bios_J1900在openwrt不能正常重启的BIOS选项说明
  17. 学计算机高考英语听力考试,北京:2018年高考英语听力机考问答
  18. 【web性能】获取web各个阶段响应时间:服务器响应时间、首页白屏时间、dom渲染完成时间等
  19. Windows 7下载
  20. 利用人工智能的优点,明了人工智能的局限。不要依赖它

热门文章

  1. 华为交换机创建账号密码方式SSH登录
  2. coinbase交易里的第三个output是什么?
  3. 《手机电池和快充》参数与选择
  4. 企业电子招标采购系统源码之电子采购方案:构建高效智能数字化采购
  5. canvas实现任意画线条以及画矩形
  6. android 照片拼接长图_android多图拼接长图并合理显示-Go语言中文社区
  7. LaTex插入eps或pdf(或svg)以及去除eps、pdf白边
  8. 拓嘉启远:拼多多物流揽收及时率有效提高怎么做
  9. 为什么这个618,每个店铺都想让你变会员
  10. python获取并解析电影评分Top 250的电影名称、评分和电影类型,并统计分析出哪些电影类型占比居多(最终结果显示剧情类型的电影占比最多)