Android - 在图像上绘图

时间:2012-12-06 04:58:45

标签: android image canvas bitmap drawing

b2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                setContentView(R.layout.new_main);

                String editTextStr = text.getText().toString();
                Toast msg = Toast.makeText(getBaseContext(),"/sdcard/Stored_Images/" + editTextStr + ".jpg", Toast.LENGTH_LONG);
                msg.show();

                Bitmap bmp = BitmapFactory.decodeFile("/sdcard/Stored_Images/" + editTextStr + ".jpg");
                ImageView img = (ImageView) findViewById(R.id.ImageView01);
                img.setImageBitmap(bmp);
            }
        });

上面的代码在屏幕上显示保存在SD卡上的图像。

Canvas c = holder.lockCanvas();
c.drawARGB(255,0,0,0);
onDraw(c);
holder.unlockCanvasAndPost(c);

此代码创建一个画布(黑色屏幕)。

我希望能够将两者结合起来设置/显示图像作为画布,以便我可以在上面绘图。因此,如果我拍摄某人脸部的照片,我希望能够显示该图像,以便我可以在上面画胡子或其他东西。

2 个答案:

答案 0 :(得分:4)

您可能最好创建画布,向其添加位图图像,然后从那里处理用户触摸/绘图。

Bitmap bmp = BitmapFactory.decodeFile("/sdcard/Stored_Images/" + editTextStr + ".jpg");
mCanvas = new Canvas(bmp);

然后是绘图......声音就像你已经想到的那样,但如果没有,你可以从api演示中查看fingerPaint samples,演示在画布上绘制(你可以在那一点。)

答案 1 :(得分:1)

您可以在onDraw(Canvas画布)

上自定义ImageView并在图像上绘图

例如:

在您的活动中:

1)从图像

创建位图

2)将Bitmap设置为自定义ImageView

 a) create object for customized ImageView

MyImageView view = new MyImageView(this);

 b) set the bitmap


view.setImageBitmap(bmp);

MyImageView.java:

class MyImagView extends ImageView{
  //constructor
   public MyImageView(Context context){
}

//onDraw()

@Override
protected void onDraw(Canvas canvas)
{
             super.onDraw(canvas);
             //drawlines where ever you want using canvas.drawLine()
}

@Override
 public void setImageBitmap(Bitmap bm)
 { 
   super.setImageBitmap(bm);

}

}