0

嗨,我是 Android 开发的新手,我希望能够用画布进行绘图。我有几个 develop.android.com 网站没有明确说明的问题:

- 你可以为不同的视图使用一个简单的画布,还是每次你想添加一个新视图时都必须创建一个新的画布?

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

包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);
}
}
4

2 回答 2

0

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

于 2013-07-12T13:28:58.627 回答
0
  1. 是的,每个视图都有自己的画布。
  2. 您可以使用以下方法将可绘制资源转换为位图: BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_resource);
于 2013-07-12T13:24:06.337 回答