Bitmap的一些操作

    这个不同于ImageView控件,这个不是控件,是画在画布上的,类要继承与View。将图片导入到res文件夹的三个文件下面。

得到资源

    得到图片的方式为:

myPic1=((BitmapDrawable)getResources();
getDrawable(R.drawable.p1)).getBitmap();  

 

绘制图片

    在onDraw(Canvas canvas)方法中绘制图片,

    可以直接绘制:canvas.drawBitmap(myPic1, 0,0,null);

    第一个参数是图画资源

    后两个是在屏幕上的坐标,应该是左上角的坐标


图片的缩放

    1. drawBitmap

public void drawBitmap(Bitmapbitmap, Rect src, Rect dst,Paint paint)

    第一个Rect是图片的裁剪区域

    第二个Rect是屏幕的裁剪区域

    也就是把预定的图片区域显示在预定的屏幕区域上面,这是一种绘制图片的方式,但也可以实

通过这个方式实现缩放效果

    例如:

canvas.drawBitmap(mBitmap, new Rect(100, 100, 300, 300), new Rect(100, 100,200, 200), null);

这里将 mBitmap 的 (100,100) 到 (300,300) 区域拿出来,自动缩放并画到屏幕的 (100,100) 到 (200,200) 区域。 

  =====》
    2 通过Matrix实现缩放效果

     具体实现跟下面的图片旋转的实现方式一样,只是用了Matrix的另一个方法,

    public void setScale (float sx, float sy)

    只需将下面旋转效果的代码中setRotate()方法替换为

//设置缩放
matrix.setScale(scale, scale);

    其中scale为定义的缩放倍率:float scale = 1.0f;调节这个参数的大小就可以实现缩放。 用这个方法会构造新的Bitmap,会消耗内存,所以效率没有上面第一种方法的高。

图片的旋转

    需要使用Matrix,他包含3*3的矩阵,专门用于图像变换匹配,必须被初始化,通过reset方法实现。通过setRotate设置旋转的角度,然后通过createBitmap()创建一个经过旋转等处理的Bitmap对象,然后将Bitmap画到屏幕上即实现了旋转效果

    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);

        //重置Matrix对象
        matrix.reset();

        //设置旋转
        matrix.setRotate(angle);

        //按matrix的旋转构造新的bitmap
        Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

        //绘制旋转之后的图像
        canvas.drawBitmap(bitmap2,(320-bitmap.getWidth())/2,(430-bitmap.getHeight())/2, null);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值