Zoom in eine Leinwand mit canvas.scale-Funktion?
Implementierte ich eine lange onDraw
Methode, die zieht eine Reihe von Rechtecken. Die Rechtecke sind zu klein und ich möchte, dass Sie größer erscheinen. Aber leider kann ich es nicht ändern, die Rechteck-Koordinaten, weil Sie in einer Datenbank gespeichert. So ist es eine Möglichkeit, kann ich zoom in die Leinwand mit canvas.scale()
?
- "Aber leider kann ich nicht ändern, das Rechteck-Koordinaten becoz Sie werden in einer Datenbank gespeichert", Warum? Sie bekommen die Koordinaten aus der DB und vermehren sich durch was auch immer-Skala Faktor, den Sie benötigen, bevor drawRectangle().
- kann ich implementieren einen zoom-in-Funktion, die Möglichkeit?
- x = getValueFromDatabase(), y = getValueFromDatabase(), x=x*5;y=y*5; drawRectangle(x,y). Was ist falsch mit sowas? Mein Punkt ist, warum nicht mit den Werten in einer Datenbank gespeichert stoppen Sie mit dem zeichnen der Rechtecke größer? Ich verstehe es nicht. Natürlich können Sie ändern Sie die Rechteck-Koordinaten. Sie können machen, was Sie wollen.
- ich weiß, aber ich habe bereits die Daten in der Datenbank und erfolgt die Zeichnung der Karte, brauche ich nur zu wissen, eine Methode zum vergrößern der Arbeitsfläche oder die anzeigen im Zusammenhang mit ihm 🙂
- Wenn Sie wollen, Zielen Sie auf verschiedene Geräte, überprüfen Sie auch die offizielle Vorschläge zur Arbeit mit der Dichte der display: developer.android.com/guide/practices/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich werde Vorwort dies beantworten, indem Sie sagen, Sie müssen zu ziehen, alles bei 0,0 und dann skalieren, und schließlich, übersetzen Sie es, sich richtig zu Verhalten.
Tun Sie einfach Folgendes in Ihre onDraw-Methode:
xScale schrumpft oder streckt in X-Richtung,
yScale schrumpft oder streckt in Y-Richtung.
1.0 ist der Standardwert für diese, also 2.0 ziehen Sie es durch doppelklicken und 0,5 schrumpfen würde es um die Hälfte.
Beispiel:
Dieser wird ziehen Sie ein Rechteck mit Länge 5.0 und Breite 5.0, verkleinere es auf 2,5 für Länge und Breite, und bewegen Sie ihn dann auf (50, 50).
Das Ergebnis wird ein Rechteck gezeichnet, als ob Sie dies getan haben:
Ich hoffe, das hilft!
context.translate(50, 50); context.scale(0.5, 0.5); context.fillRect(0.0, 0.0, 5.0, 5.0);