注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

尐鬼じ☆ve伱

和你在一起的日子

 
 
 

日志

 
 

Android中常用的位图操作5 (转)  

2013-01-15 11:14:54|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.devdiv.com/Android-Android%E4%B8%AD%E5%B8%B8%E7%94%A8%E7%9A%84%E4%BD%8D%E5%9B%BE%E6%93%8D%E4%BD%9C-thread-127485-1-1.html
4)图像倒影

        为图像添加倒影效果之后,图像看起来会有立体感,更有真实感,在Android中使用Matrix类可以很容易实现图像的倒影效果。主要是Matrix的preScale方法的使用,给它设置负数缩放比例,图像就会进行反转。然后通过设置Shader添加渐变效果。Java代码如下:

01//getReflectedBitmap
02        private Bitmap getReflectedBitmap() {
03                BitmapDrawable mBitmapDrawable = (BitmapDrawable) getResources().getDrawable(R.drawable.pet);
04                Bitmap mBitmap = mBitmapDrawable.getBitmap();
05                int width = mBitmap.getWidth();
06                int height = mBitmap.getHeight();
07                 
08                Matrix matrix = new Matrix();
09                // 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转
10                matrix.preScale(1, -1);
11                 
12                //创建反转后的图片Bitmap对象,图片高是原图的一半。
13                //Bitmap mInverseBitmap = Bitmap.createBitmap(mBitmap, 0, height/2, width, height/2, matrix, false);
14                //创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。
15                //注意两种createBitmap的不同
16                //Bitmap mReflectedBitmap = Bitmap.createBitmap(width, height*3/2, Config.ARGB_8888);
17                 
18                Bitmap mInverseBitmap = Bitmap.createBitmap(mBitmap, 00, width, height, matrix, false);
19                Bitmap mReflectedBitmap = Bitmap.createBitmap(width, height*2, Config.ARGB_8888);
20                 
21                // 把新建的位图作为画板
22                Canvas mCanvas = new Canvas(mReflectedBitmap);
23                //绘制图片
24                mCanvas.drawBitmap(mBitmap, 00null);
25                mCanvas.drawBitmap(mInverseBitmap, 0, height,null);
26                 
27                //添加倒影的渐变效果
28                Paint mPaint = new Paint();
29                Shader mShader = new LinearGradient(0, height, 0, mReflectedBitmap.getHeight(), 0x70ffffff0x00ffffff, TileMode.MIRROR);
30                mPaint.setShader(mShader);
31                //设置叠加模式
32                mPaint.setXfermode(newPorterDuffXfermode(PorterDuff.Mode.DST_IN));
33                //绘制遮罩效果
34                mCanvas.drawRect(0, height, width, mReflectedBitmap.getHeight(), mPaint);
35                 
36                return mReflectedBitmap;
37        }


        效果如下图所示:

QQ截图20120611154135.png


图7-11  图像倒影


  评论这张
 
阅读(102)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017