我在画布上画了很多圆圈,想知道其中哪个被触摸了。一种解决方案是创建一个与屏幕大小相同的位图,并在屏幕上绘制一个仅具有不同颜色的圆圈的副本,以便在调用 getPixel() 时,位图可以识别单击了哪个圆圈。我的问题是我不知道如何在位图上画一个圆......也就是说,如何在Canvas上正常绘制位图作为绘图。
Paint paint;
Bitmap screen;
int w,h;
int px=-1,py=-1; //coordinate
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//registriamo le dimensioni della view
w=MeasureSpec.getSize(widthMeasureSpec);
h=MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(w,h);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
Bitmap.Config conf = Bitmap.Config.ARGB_8888; //Each pixel is stored on 4 bytes
screen=Bitmap.createBitmap(w,h, conf);
paint=new Paint(); // pennello
paint.setColor(Color.RED);
paint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(px==-1&&py==-1){ // se non abbiamo ancora settato le coordinate, posizioniamo la bmp al centro
px=w/2-bw/2; //metà della larghezza view, meno metà della figura
py=h/2-bh/2; //metà dell'altezza view, meno metà della figura
}
canvas.drawCircle(px, py, 70, paint);
}
public void updatePosition(int x, int y) {
invalidate();
}
}