gpt4 book ai didi

android - 如何在自定义 View 的 Canvas 中设置位图图像?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:36 25 4
gpt4 key购买 nike

我的主类中有一个 Bitmap 对象。我需要将此位图发送到我的自定义 View 类,以将其设置为在 Canvas 上进一步处理的背景。

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

请看下面的代码:

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, 0, 0, null);

myBitmap 是您的位图变量。

0,0 指的是要绘制的坐标,也就是左上角。

还有其他可用的 Api,用于绘制某些区域等。

More info can be found here in the api docs.

或者:改为扩展 ImageView,并使用 setImageBitmap(Bitmap src); 方法来实现此目的。

关于android - 如何在自定义 View 的 Canvas 中设置位图图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14174104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com