zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
  • 相关阅读:
    sublime配置攻略
    Objective-C代码块语法(block)使用
    [C/C++]_[VS2010来源与UTF8中国字符串转码ANSI问题]
    Android资源管理框架(Asset Manager)简介和学习计划
    ExtJs自学教程(1):从一切API开始
    ORACLE触发特定的解释
    同TextView在不同的显示内容
    :gAudit
    IIS日志分析 MapReduce
    图片存储心得
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5846660.html
Copyright © 2011-2022 走看看