使用画布绘图

时间:2013-07-12 13:21:22

标签: android bitmap drawing android-canvas android-studio

嗨,我是Android开发的新手,我希望能够用画布来画画。 我有几个问题,develop.android.com网站没有说清楚:

- 您可以为不同的视图使用简单的画布,或者每次要添加新视图时是否必须创建新画布?

- 位图是唯一可以绘制到画布上的图像类型“东西”吗?例如在我下面的代码中我有一个名为漩涡的drawable但是我不能使用它,我是否必须将其转换为位图?我该怎么做?

包ple.kon15;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.View;
import android.widget.ImageView;

public class DrawBG extends View {
Bitmap swirls = BitmapFactory.decodeResource(getResources(),R.drawable.swirls);
public DrawBG(Context context) {
    super(context);
}
    @Override
    protected void onDraw(Canvas canvas)
{
        super.onDraw(canvas);
        canvas.drawBitmap(swirls, swirls.getWidth(), swirls.getHeight(),null);
}
    public DrawBG(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
}
    public DrawBG(Context context, AttributeSet attrs) {
        super(context, attrs);
}
}

2 个答案:

答案 0 :(得分:0)

  1. 是的,每个View都有自己的Canvas。
  2. 您可以使用以下方法将可绘制资源转换为位图: BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_resource);

答案 1 :(得分:0)

1-是的,每个视图都有自己的画布,但你也可以拥有一个画布的复杂视图, 2-您应该使用BitmapFactory.decodeResource(your_context.getResources(), R.drawable.swirls);对其进行解码。不仅仅是位图,你可以绘制线条,顶点,矩形,圆角矩形,带画布的路径,如果你想做更复杂的事情,如游戏或复杂的动画,你也可以使用SurfaceView但你应该仔细思考,因为它更先进一点,并给你所有的surcace处理