• 图像缩小和扩大


    postScale:设置图片的缩放

     

     

     

    package com.example.examples_05_09;

     

    import android.R.integer;

    import android.annotation.SuppressLint;

    import android.content.Context;

    import android.graphics.Bitmap;

    import android.graphics.Canvas;

    import android.graphics.Matrix;

    import android.graphics.drawable.BitmapDrawable;

    import android.view.View;

     

    @SuppressLint("DrawAllocation")

    public class GameView extends View implements Runnable {

     

    Bitmap QQBit;//位图

    int QQBitWidth=0;//宽度

    int QQBitHeight=0;//高度

    //实例化图像对象

    Matrix matrix=new Matrix();

    float sc=1.0f;//设置缩放

    public GameView(Context context) {

    super(context);

    // TODO Auto-generated constructor stub

    //获取图片

    QQBit=((BitmapDrawable)getResources().getDrawable(R.drawable.qq)).getBitmap();

    //获取高

    QQBitHeight=QQBit.getHeight();

    //获取宽

    QQBitWidth=QQBit.getWidth();

    new Thread(this).start();

     

    }

     

    public void run() {

    // TODO Auto-generated method stub

    while (!Thread.currentThread().isInterrupted()) {

    try {

    Thread.sleep(100);

    } catch (Exception e) {

    // TODO: handle exception

    Thread.currentThread().interrupt();

    }

    postInvalidate();

    }

    }

    public void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    matrix.reset();

    //设置缩放大小

    matrix.postScale(sc, sc);

    //重新获得设置好的位图

    Bitmap bitmap=Bitmap.createBitmap(QQBit, 0, 0, QQBitWidth, QQBitHeight,matrix,true);

    //绘制

    GameView.drawImage(canvas, bitmap, (320-QQBitWidth)/2, 20);

     

    }

     

    //绘制

    public static void drawImage(Canvas canvas,Bitmap bitmap,int x,int y) {

    canvas.drawBitmap(bitmap, x, y, null);

    }

     

    }

     

     

    package com.example.examples_05_09;

     

    import android.os.Bundle;

    import android.app.Activity;

    import android.view.KeyEvent;

    import android.view.Menu;

     

    public class MainActivity extends Activity {

     

    GameView gameView;

        @Override

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            gameView=new GameView(this);

            setContentView(gameView);

        }

        public boolean onKeyDown(int keyCode,KeyEvent event) {

         if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT)

         if(gameView.sc>0.3)

         {

         gameView.sc-=0.1;

         }

         else if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) {

         if(gameView.sc<1.5)

         {

         gameView.sc+=0.1;

         }

    }

    return true;

    }

    }

  • 相关阅读:
    面试题:增强一个对象的方法的三种方式
    Spring笔记01_下载_概述_监听器
    mybatis笔记02
    mybatis笔记01
    muduo学习笔记(二)Reactor关键结构
    Muduo学习笔记(一) 什么都不做的EventLoop
    一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)
    一个轻巧高效的多线程c++stream风格异步日志(二)
    一个轻巧高效的多线程c++stream风格异步日志(一)
    C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
  • 原文地址:https://www.cnblogs.com/danmao/p/3808689.html
Copyright © 2020-2023  润新知