android – 如何在我的自定义视图的画布中设置位图图像?

前端之家收集整理的这篇文章主要介绍了android – 如何在我的自定义视图的画布中设置位图图像?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的主类中有一个Bitmap对象.我需要将此位图发送到我的自定义视图类,以将其设置为在画布上进一步处理的背景.

例如,有一个名为setPicture的方法,它接收位图作为参数.那么,如何在画布上绘制这个位图呢?

请参阅以下代码

public class TouchView extends View {

 final int MIN_WIDTH = 75;
 final int MIN_HEIGHT = 75;
 final int DEFAULT_COLOR = Color.RED;
 int _color;
 final int STROKE_WIDTH = 2;

private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
private float x,y;
private boolean touching = false;

public TouchView(Context context,AttributeSet attrs,int defStyle) {
    super(context,attrs,defStyle);
    // TODO Auto-generated constructor stub
    init();
}

public TouchView(Context context,AttributeSet attrs) {
    super(context,attrs);
    // TODO Auto-generated constructor stub
    init();
}

public TouchView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    init();
}

private void init() {
    setMinimumWidth(MIN_WIDTH);
    setMinimumHeight(MIN_HEIGHT);
    _color = DEFAULT_COLOR;
}

@Override
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) {
    // TODO Auto-generated method stub
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),MeasureSpec.getSize(heightMeasureSpec));
}

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

    if (touching) {
        paint.setStrokeWidth(STROKE_WIDTH);
        paint.setColor(_color);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawCircle(x,y,75f,paint);
    }
}

public void setPicture (Bitmap bitmap) {

        ///////
         This method must receive my bitmap to draw it on canvas!!!!!!!!!!!!!!!
        ///////


}

public void setColor(int color) {
    _color = color;
}

@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
    // TODO Auto-generated method stub

    switch (motionEvent.getAction()) {
    case MotionEvent.ACTION_MOVE:
    case MotionEvent.ACTION_DOWN:
        x = motionEvent.getX();
        y = motionEvent.getY();
        touching = true;
        break;
    default:
        touching = false;
    }
    invalidate();
    return true;
}

}

我应该如何将此位图发送到onDraw?

解决方法

在你的onDraw()方法里面,

做就是了

canvas.drawBitmap(myBitmap,null);

myBitmap是你的位图变量.

0,0指的是绘制的坐标,即左上角.

还有其他的Apis,可以吸引到某些地区等.

More info can be found here in the api docs.

或者:改为扩展ImageView,并使用setImageBitmap(Bitmap src);实现这一目标的方法.

猜你在找的Android相关文章