Wie Canvas-Zeichnung von Koordinaten entbinden

  • 1 Antworten
  • Letztes Antwortdatum
T

Tersus

Gast
Guten Abend,

wenn ich in meiner erweiterten View in der onDraw(Canvas canvas) Methode mein eigenes GUI Element zeichne, sei es ein Rechteck, wie kann ich es von den fixen Koordinaten lösen?

Die Maße des Rechtecks sollen tatsächlich als Einheit Pixel haben, das ist von mir so gewünscht. Beispielsweise 100 Pixel in jeweils Höhe und Breite.

Aber beim Zeichnen mittels canvas.drawRect(...) muss ich einen Start in Pixeln angeben ... . Füge ich diese View meinem Layout zu, so passt sie sich diesem nicht an, sondern ist wirklich immer an der Stelle, an der ich den Start / das Ende angegeben habe ... .

Kann mir jemand helfen?

EDIT:
Ich verdeutliche noch einmal. Ich möchte ein eigenes android.widget pasteln, so wie die TextView, der Button und auch viele andere Elemente sind.
 
Zuletzt bearbeitet von einem Moderator:
Wenn du einen CUstomView schreibst, musst du dir mal die Methoden onMeasure anschauen.
Da bekonmmt deine View mitgeteilt, wieviel Platz sie hat.

Code:
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int measuredWidth = measure(widthMeasureSpec);
        int measuredHeight = measure(heightMeasureSpec);
        scalefactor = (float) measuredWidth / originbreite; 

       // Ich sichere mir den Scalefactor um Ihn später im onDraw zu benutzen
      // um das "skalieren" muss man sich halt selber kümmern


        // hier dann mit deinen gewünschten Werten abgleichen 
 

    }

Die Methoden measure musst du halt auch noch anpassen, damit der Mode richtig erkannt wird. Und wie im Kommentar geschrieben passt du jetzt deine onDraw so an, das all deine fixen Koordinaten nun skaliert werden.

In deinem Fall posx = (x*Scalefactor);
breite = posx + (100xscalefaktor);

analog für dei Höhe und schon skaliert dein View/Control.
 
Zurück
Oben Unten