• Android 图片的平移和镜面和倒影效果


    在前面的文章中陆续介绍了图片的旋转与缩放,本文继续介绍关于图片的操作

    图片的平移

    使用下面的代码将图水平竖直方向平移10个像素

    matrix.setTranslate(10, 10);

    可以看到图片不完整,需要修改代码:

    // 新建一个bitmap
    Bitmap alterBitmap = Bitmap.createBitmap(bitmap1.getWidth() * 2,
                    bitmap1.getHeight() * 2, bitmap1.getConfig());

    其他代码均不变

    图片的镜面效果

    代码如下:

    matrix.setScale(-1, 1);
    matrix.postTranslate(bitmap1.getWidth(), 0);

    实现的效果:

    图片的倒影效果

    代码如下:

    //倒影效果
    matrix.setScale(1, -1);
    matrix.postTranslate(0, bitmap1.getHeight());
            

    实现的效果:

    完整代码如下:

    package com.wuyudong.resize;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Matrix;
    import android.graphics.Paint;
    import android.view.Menu;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
        private ImageView iv1;
        private ImageView iv2;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            iv1 = (ImageView) findViewById(R.id.iv_1);
            iv2 = (ImageView) findViewById(R.id.iv_2);
    
            // 设置第一个bitmap的图标
            Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),
                    R.drawable.unlock);
    
            iv1.setImageBitmap(bitmap1);
    
            // 新建一个bitmap
            Bitmap alterBitmap = Bitmap.createBitmap(bitmap1.getWidth() * 2,
                    bitmap1.getHeight() * 2, bitmap1.getConfig());
    
            // 以alterBitmap为模板新建画布
            Canvas canvas = new Canvas(alterBitmap);
            // 新建画笔并设置属性
            Paint paint = new Paint();
            paint.setColor(Color.BLACK);
    
            // 新建矩阵并设置缩放值
            Matrix matrix = new Matrix();
            
            //镜面效果
            //matrix.setScale(-1, 1);
            //matrix.postTranslate(bitmap1.getWidth(), 0);
            
            //倒影效果
            matrix.setScale(1, -1);
            matrix.postTranslate(0, bitmap1.getHeight());
            
            //平移效果
            // matrix.setTranslate(10, 10);
    
            // 设置画布
            canvas.drawBitmap(bitmap1, matrix, paint);
            iv2.setImageBitmap(alterBitmap);
        }
    
    }
  • 相关阅读:
    实现一个简单的ConnectionPool
    并发连接MySQL
    C#里面滥用String造成的性能问题
    String.IndexOf
    C#代码中插入X86汇编
    正确理解Handle对象
    orleans发送广播消息
    log日志方法
    PHP 批量插入数据
    逻辑漏洞小结之SRC篇
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5846660.html
Copyright © 2020-2023  润新知