如何利用matrix实现图片倒影效果

如何利用matrix实现图片倒影效果,第1张

概述本文主要内容就是用marix加上渐变色实现图片倒影效果,步骤如下: 1.获取需要倒影效果的图片,这里取原图片的一半

本文主要内容就是用marix加上渐变色实现图片倒影的效果,步骤如下:

 1. 获取需要倒影效果的图片,这里取原图片的一半

 2. 添加颜色渐变到倒影图片上

 具体的实现如下面代码所述,我们以一种自定义view的形式给出效果图,代码如下:

package com.flection.vIEw;import com.flection.main.R;import androID.annotation.Suppresslint;import androID.content.Context;import androID.graphics.Bitmap;import androID.graphics.Bitmap.Config;import androID.graphics.BitmapFactory;import androID.graphics.Canvas;import androID.graphics.color;import androID.graphics.linearGradIEnt;import androID.graphics.Matrix;import androID.graphics.Paint;import androID.graphics.PorterDuffXfermode;import androID.graphics.Shader.TileMode;import androID.graphics.drawable.BitmapDrawable;import androID.util.AttributeSet;import androID.vIEw.VIEw;public class FlectionVIEw extends VIEw {  Context mContext=null;  public FlectionVIEw(Context context) {    super(context);  }  public FlectionVIEw(Context context,AttributeSet attrs) {    super(context,attrs);    this.mContext=context;  }  @Suppresslint("DrawAllocation")  @OverrIDe  protected voID onDraw(Canvas canvas) {    //设置背景色    this.setBackgroundcolor(color.parsecolor("#8B8378"));    Bitmap oldBitmap = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.dropBox);    Bitmap newBitmap = createFlectionBitmap(oldBitmap);    canvas.drawBitmap(newBitmap,newBitmap.getWIDth(),newBitmap.getHeight(),new Paint());    this.invalIDate();  }  //获取原图+倒影图的bitmap  private Bitmap createFlectionBitmap(Bitmap oldBitmap) {    int mWIDth = oldBitmap.getWIDth();    int mHeight = oldBitmap.getHeight();    //原图和倒影图之间的缝隙    int gap = 2;    Matrix matrix = new Matrix();    matrix.preScale(1,-1);    Bitmap flection = Bitmap.createBitmap(oldBitmap,mHeight / 2,mWIDth,matrix,false);    Bitmap background = Bitmap.createBitmap(mWIDth,mHeight+gap+mHeight/2,Config.ARGB_8888);    Canvas canvas = new Canvas(background);    Paint p1 = new Paint();    //画出原图    canvas.drawBitmap(oldBitmap,p1);    //画出倒影图    canvas.drawBitmap(flection,mHeight+gap,p1);    Paint shaderPaint = new Paint();    linearGradIEnt shader = new linearGradIEnt(0,mHeight,flection.getHeight(),0x70ffffff,0x00ffffff,TileMode.MIRROR);    shaderPaint.setShader(shader);    shaderPaint.setXfermode(new PorterDuffXfermode(androID.graphics.PorterDuff.Mode.DST_IN));    //画出渐变颜色    canvas.drawRect(0,background.getHeight(),shaderPaint);    return background;  }}

实现的效果如下图:

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的如何利用matrix实现图片倒影效果全部内容,希望文章能够帮你解决如何利用matrix实现图片倒影效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存