在Android中向Canvas添加图像

时间:2011-04-28 19:03:44

标签: android image-manipulation

每个人的好日子

我希望你能帮助我理解理解如何在View上实现的OnTouchEvent上将图像添加到画布中的概念。到目前为止,这是我想出来的。
是在此自定义视图中实例化并添加到其中的活动。

@Override
protected void onDraw(Canvas canvas)
{
    // TODO Auto-generated method stub
    super.onDraw(canvas);
}

public void insertImage()
{
    if (parent.selected_icon.contentEquals("image1"))
    {
        image = getResources().getDrawable(R.drawable.image1);
    }
    else if (parent.selected_icon.contentEquals("image1"))
    {
        image = getResources().getDrawable(R.drawable.image2);
    }
    else if (parent.selected_icon.contentEquals("iamge3"))
    {
        image = getResources().getDrawable(R.drawable.image3);
    }

    Rect srcRect = new Rect(0, 0, image.getIntrinsicWidth(), 
            image.getIntrinsicHeight());
    Rect dstRect = new Rect(srcRect);

    Bitmap bitmap = Bitmap.createBitmap(image.getIntrinsicWidth(), 
            image.getIntrinsicHeight(), Bitmap.Config.ALPHA_8);

    Canvas canvas = new Canvas();
    canvas.drawBitmap(bitmap, srcRect, dstRect, null);
    invalidate();
}

1 个答案:

答案 0 :(得分:1)

如果要绘制视图,则必须使用onDraw()Canvas中执行此操作。 Canvas已绑定到Bitmap,这是您视图的实际绘图。

我必须做类似的事情,我的方法是这样的:

  • 作为班级成员,我有一个“要在视图上绘制的东西”的列表。
  • 每当我在该列表中添加内容时,我都会调用invalidate(),以便onDraw()被调用。
  • 我的onDraw()看起来像这样:

...

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas); // the default drawing

    for(ThingToBeDrawn thing : mListOfThingsToBeDrawn) {
         thing.drawThing(canvas); // draw each thing over the view
    }
}

Canvas只是用于绘制Bitmap的工具,其工作方式与SurfaceView完全不同。