概述

本文将综合运用图形图像处理技术,如画刷、半透明遮罩、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做了一个简单的水中倒影示例,你可以从这里下载本文示例代码。
本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/66966,如需转载请自行联系原作者

使用Silverlight 2实现水中倒影效果相关推荐

  1. 利用Silverlight 2实现水中倒影效果

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

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

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

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

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

  4. 第31课 图形图像综合实例:实现水中倒影效果

    概述 本文将综合前面几篇关于图形图像处理的技术,如画刷.半透明遮罩.Transform等,实现一个水中倒影效果的示例. Step 1:素材准备 最终我们实现的效果图将会如下所示: 先准备一张图片,这里 ...

  5. 你知道逼真的水中倒影效果如何在CAD软件做出来

    我们在CAD中,可以做出逼真的水中倒影效果吗?当然可以,只要我们呢配合背景图片就能做出来,这个就需要我们很好的掌握制图的技巧了. 我们看看下面的素材 1.我们先画出以个葫芦形的香炉脚,作为我们的基本图 ...

  6. css+JavaScript实现水中倒影效果

    <html> <head> <title>水中倒影效果</title> <style type="text/css"> ...

  7. Silverlight 2 相关文章汇总

    概述 对自己写的Silverlight 2的相关文章做一下汇总,便于大家直接查找.另外,大家如果有关于Silverlight 2方面的问题,也可以在这里提出,我将尽力为大家解答. 一步一步学习Silv ...

  8. 【数字图像处理】浮雕效果和倒影效果

    Ø  [作业要求] Perform either of the following two tasks: 1. Write your own imresize() function codeto si ...

  9. javascript常用小例子

    1.让文字不停地滚动 <MARQUEE>滚动文字</MARQUEE> 2.记录并显示网页的最后修改时间 <script language=Javascript> d ...

最新文章

  1. 2007.04.26
  2. 关于开源精神和抄袭问题
  3. Cell子刊:粘上你-细菌生长素介导的植物根部细菌定殖
  4. 从user 登陆開始
  5. 利用gcc的-finstrument-functions获取函数轨迹跟踪
  6. [201804012]关于hugepages 3.txt
  7. 记录处理搜狗新闻分类
  8. 解决idea 控制台中文乱码
  9. 资源权限操作-查询所有资源权限
  10. python-pycharm控制台输出带颜色
  11. chainmaker-go-sdk get cert hash failed, get cert hash failed, send QUERY_SYSTEM_CONTRACT failed
  12. 解决MySQL登录1045错误
  13. led点阵c语言程序,LED点阵C语言程序
  14. Android Google Play 支付SDK接入指南
  15. IPTV的开展在广电企业、电信运营商角度上的异同
  16. 2021年中国食糖产销量及重点企业对比分析[图]
  17. husky 7 + lint-staged 11+ prettier 2 + eslint 7 配置
  18. 山西宗教文化漫谈(三)一五台山:四大佛山之首
  19. javaweb监听器(统计在线人数:统计session)
  20. 2010年《杨卫华谈微博架构》视频摘抄

热门文章

  1. iOS架构-cocoapods之本地git库的管理(15)
  2. 饼图大小调整_别让这些细节毁了你的图表,饼图制作的三大准则和七大细节
  3. python数据接口设计_python之接口与归一化设计
  4. uniapp在安卓和IOS端 APP固定竖屏及获取设备信息
  5. ubuntu常用指令
  6. cookie存值和page分页
  7. MySQL中字段字符集不同导致索引不能命中
  8. windows配置nginx实现负载均衡集群
  9. 如何获取并操作listview中的控件
  10. 往往客户的需求是逐渐被深入的真正的实际需求往往没刚开始所说的那么简单容易就可以搞定...