镜面效果: matrix.setScale(-1, 1);

本文介绍如何在Android应用中使用matrix.setScale方法创建物体的镜面翻转效果,通过设置负缩放值在Y轴上实现镜像反转。详细解释了矩阵变换在图形绘制中的作用,并提供了一个简单的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

public class MainActivity extends Activity implements OnClickListener {

      private  Button  bt;
      private  ImageView  iv;
      private  ImageView  iv_after;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
            setContentView(R.layout. activity_main);
            
             iv=(ImageView) findViewById(R.id. iv);
             bt=(Button) findViewById(R.id. bt);
             iv_after=(ImageView) findViewById(R.id. iv_after);
            
            
             bt.setOnClickListener( this);
            
      }

      
      
      /**
       * 获取图片的方法
       * @param v
       */
      @Override
      public void onClick(View v) {
            
             //创建隐式意图
        Intent intent= new Intent();
        intent.setAction( "android.intent.action.PICK");
        intent.addCategory(intent. CATEGORY_DEFAULT);
        intent.setType( "image/*");
       
        startActivityForResult(intent, 0);
    }
      
      
      
      /**
     * 获取Activity返回的数据
     */
    @Override
    protected void onActivityResult( int requestCode, int resultCode, Intent data) {
           super.onActivityResult(requestCode, resultCode, data);
         
          Uri uri = data.getData();   //接收到返回照片的 uri
          iv.setImageURI(uri);  
         
          try {
               
             //得到原图的bitmap   只读(要从这个bitmap读取像素点到其他的空白bitmap上)
                  Bitmap  bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
                  
                   //创建一个空白可修改的bitmap   b1
                  Bitmap  alertBitmap=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
                  
                   //将空白可修改的bitmap作为画布    b2
                  Canvas  canvas= new Canvas(alertBitmap);
                  
                   //创建画笔
                  Paint  paint= new  Paint();
                  paint.setColor(Color. GREEN);
                  
                   //在画布上画原图片的像素点
                   Matrix matrix = new  Matrix();
                   matrix.setScale(-1, 1);     //将原图像素点x坐标去反
                   matrix.postTranslate(bitmap.getWidth(), 0);  //将像素点右移一个画布的距离以此显示到屏幕上
                  
                canvas.drawBitmap(bitmap, matrix, paint);   //1.原图  2.矩阵   3.画笔
                  
                //将画好的b2挂在iv上
                iv_after.setImageBitmap(alertBitmap);
                  
            } catch (Exception e) {
                  
                  e.printStackTrace();
            }
          
          
    }

}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值