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();
}
}
}