2012-03-31 23 views
0

Ich habe einen Code, wo ich Bild zeichnen:Leinwand und Zeichnung Bild in das Layout

class Panel extends View { 

     public Panel(Context context) { 
      super(context); 
     } 

     @Override 
     public void onDraw(Canvas canvas) { 
      Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.calvin_logo_small); 
      canvas.drawColor(Color.WHITE); 
      canvas.drawBitmap(_scratch, x-point, y-point, null); 
     } 
    } 

Wie kann ich dieses Bild in meiner Tätigkeit ziehen, aber ich möchte nicht, Mai Layout ändern. Ich habe Layout: setContentView(R.layout.main); Dies ist möglich, in diesem Wauout mit Leinwand zu zeichnen? Ich habe diese Aktivität und dieses Layout haben viele Komponenten. Ich möchte nur ein Bild an der Stelle, wo ich mit Leinwand klicke. Das ist eine Idee. Ich starte die Anwendung, wo ich mit meiner setContentView(R.layout.main); starte. Danach klicke ich auf den Bildschirm und zeichne das Bild an der Stelle, wo ich geklickt habe. Dies ist möglich?

Antwort

1

Ihr Code sollte funktionieren. Überschreiben Sie einfach die onTouchEvent() für die Ansicht, speichern Sie die Koordinaten des Touch-Ereignisses in Feldvariablen und invalidate() die Ansicht, so dass onDraw() würde aufgerufen werden. Verwenden Sie die Koordinaten in onDraw(), um das Bild so zu rendern, wie Sie es bereits getan haben.

Um die Leistung zu verbessern, können Sie die Bitmap zwischenspeichern, wenn sie sich nicht ändert.