Canvas ,Paint,Bitmap画图

Canvas画布,所有画出来的图形都在Canvas上,Paint是画笔,用来渲染画布上画出来的图形,而Bitmap是一个图片的容器,用来存放图片的。
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));  
paint.setColor(Color.BLUE);
canvas.drawText("自定义View,canvas对象已经存在。", 30, 40, paint);
canvas.drawRect(10, 10, 30, 30, paint);

如上,设置好了Paint的样式后,在canvas上画文本或者矩形都可以。
如果要画一张图片出来,就要像下面这样了。

Bitmap iconbit = BitmapFactory.decodeResource(getResources(), R.drawable.icon) ;
canvas.drawBitmap(iconbit, 40,40, paint);

下面是把一个bitmap变成drawable


Bitmap bitmap = Bitmap.createBitmap(200, 100, Config.ARGB_8888) ;

ImageView imgView = new ImageView(this) ;
//将Bitmap对象转换为Drawable图像资
Drawable drawable = new BitmapDrawable(bitmap) ;
imgView .setBackgroundDrawable(drawable) ;


下面这段代码,在bitmap上既画了iconbit又画了一个矩形。
Paint paint = new Paint();
Bitmap iconbit = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher) ;
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
paint.setColor(Color.RED);

Bitmap bitmap = Bitmap.createBitmap(200, 300, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(iconbit, 0,0, paint);

Rect rect = new Rect (10,80,180,120) ;

//当前的画图区域为Rect裁剪的区域,而不是我们之前赋值的bitmap
canvas.clipRect(rect) ;
canvas.drawColor(Color.YELLOW);
paint.setColor(Color.BLACK);
canvas.drawText("裁剪clip后画图区域-黄色部分", 10,100,paint) ;
change.setImageBitmap(bitmap);


下面是使用save和restore方法的示例:

Paint paint = new Paint();
//将icon图像转换为Bitmap对象
Bitmap iconbit = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search) ;

//创建一个的Bitmap对象
Bitmap bitmap = Bitmap.createBitmap(400, 400, Config.ARGB_8888) ;

Canvas canvas = new Canvas (bitmap) ;

paint.setColor(Color.GREEN);
paint.setTextSize(30); //设置字体大小
canvas.drawText("我没有旋转",30, 40, paint);

canvas.save() ;

canvas.rotate(30) ;
paint.setTextSize(13);
paint.setColor(Color.BLACK);
canvas.drawText("我是旋转的",115,20, paint);

canvas.restore();

paint.setColor(Color.BLUE);
canvas.drawText("我没有旋转",115,20, paint);

//将Bitmap对象转换为Drawable图像资
//为ImageView设置图像
change.setImageBitmap(bitmap);

// Drawable drawable = new BitmapDrawable(bitmap) ;
// change.setBackgroundDrawable(drawable) ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值