Android学习记录:Paint,Canvas和Bitmap

在Java中,利用过双缓冲技术,先将画笔画在内存上,再转化为图片,调出来。
当画的东西过多造成处理不过来时,双缓冲技术将防止闪屏。
在Paint方法下,我们这样写:

    BufferedImage tmp = new BufferedImage(1200, 900, BufferedImage.TYPE_INT_ARGB);
    Graphics g2 = tmp.createGraphics();

利用g2来绘图,然后再将tmp画在g上面

    g.drawImage(tmp, 0, 0, this);

在安卓中,我们也利用类似的思维。
其中Bitmap类似于BufferedImage,Canvas类似于Graphics,而paint则类似于画笔,原来是在Graphics下直接设置颜色,而现在则需要在paint下设置颜色,并在Canvas绘制传参时加入paint。

public boolean onTouch(View v, MotionEvent event) {
        //获取当前时间的动作
        if(flag == 0){
            bitmap = Bitmap.createBitmap(iv.getWidth(),iv.getHeight(), Bitmap.Config.ARGB_8888);
            flag = 1;
        }
        canvas = new Canvas(bitmap);
        int action = event.getAction();
        switch(action){
        case MotionEvent.ACTION_DOWN:{
            a = event.getX();
            b = event.getY();
            }break;
        case MotionEvent.ACTION_UP:{
            c = event.getX();
            d = event.getY();
            canvas.drawLine(a,b,c,d, paint);
            }break;
        }

        canvas.drawBitmap(bitmap, 0,0, paint);
        iv.setImageBitmap(bitmap);
        return true;
    }

其中flag用来判断是否已经创立画布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值