Bitmap bmp = Bitmap.createBitmap(getWindowManager().getDefaultDisplay() .getWidth(), getWindowManager().getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_4444);
位图配置:Bitmap.Config
(1)ALPHA_8:用于作为Alpha蒙版的位图,只为Alpha通道分配8位。没有其他颜色值。
(2)ARGB_4444:为每个颜色通道分配4位,包括Alpha通道。允许拥有16个Alpha值得4096种不同的颜色。
(3)ARGB_8888:为每个颜色通道分配8位,包括Alpha通道。允许拥有256个Alpha值得1670万种不同的颜色。
(4)RGB_565:5位用于红色通道,6位用于绿色通道,以及5位用于蓝色通道(没有Alpha通道)。允许有65535种不同的颜色。这个设置几乎
与ARGB_8888具有相同的高质量,但占用更少的内存空间。
canvas=new Canvas(bmp); paint=new Paint(); //设置画笔颜色1 //int myColor=Color.argb(255, 122, 64, 12);//通过这个方法构造一个特定的颜色0~255之间的值。 //paint.setColor(myColor); //设置画笔颜色2 paint.setColor(Color.GREEN);//设置画笔颜色,Color.BLACK,Color.BLUE等 paint.setStyle(Paint.Style.STROKE);//设置画笔样式 paint.setStrokeWidth(10);//设置画笔大小 canvas.drawPoint(188, 200, paint);//画点 canvas.drawLine(50, 100, 150, 210, paint);//画线 canvas.drawRect(20, 20, 50, 100, paint);//画矩形
绘画文字:
paint.setTextSize(50); paint.setTypeface(Typeface.DEFAULT);//文字样式 Path path=new Path(); path.moveTo(20, 20);//开始 path.lineTo(300, 720); canvas.drawTextOnPath("Why do you always in my heart", path, 0, 0, paint);
手指绘画:
设置监听事件:showImage.setOnTouchListener(this);
private float downX = 0;// 按下x坐标 private float downY = 0;// 按下y坐标 private float upX = 0;// 离开X坐标 private float upY = 0;// 离开Y坐标 @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: downX = event.getX(); downY = event.getY(); break; case MotionEvent.ACTION_MOVE: upX = event.getX(); upY = event.getY(); canvas.drawLine(downX, downY, upX, upY, paint); showImage.invalidate();//将该对象重新画到屏幕上 downX=upX; downY=upY; break; case MotionEvent.ACTION_UP: break; default: break; } return true; }
保存位图:(有点问题,在研究中。)
if (v.getId() == R.id.save_picture) { if (bmp != null) { File dirFile = new File(SAVEPATH); if (!dirFile.exists()) { dirFile.mkdir(); } File filePicture = new File(SAVEPATH + "picture"+".png"); try { BufferedOutputStream imageFileStream = new BufferedOutputStream( new FileOutputStream(filePicture)); bmp.compress(CompressFormat.PNG,100, imageFileStream); imageFileStream.flush(); imageFileStream.close(); Toast.makeText(this, "save success", Toast.LENGTH_SHORT) .show(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
- 1楼jin87013211分钟前
- 不错啊