キャンバスにたくさんの円が描かれていて、どれが触れられているか知りたいです。1 つの解決策は、画面のサイズに合わせてビットマップを作成し、画面上の円のコピーを別の色で描画して、getPixel() の呼び出し時にビットマップ poosso がクリックされた円を認識できるようにすることです。私の問題は、ビットマップに円を描く方法がわからないことです...つまり、ビットマップを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();
}
}