1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Duckemai, 12.04.2011 #1
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Hallo,

    ich versuche gerade eine Bitmap zu drehen, und zwar so:
    canvas.save();
    canvas.rotate(90, AusgX(), AusgY());
    canvas.drawBitmap(bitmap, AusgX(), AusgY(), paint);
    canvas.restore();

    Tatsächlich dreht sich die Bitmap auch, und zwar um den Koordinatenpunkt
    x/y, also der oberen linken Ecke.

    Das Problem ist, dass wenn ich die Fläche der rotierten Bitmap abfragen möchte, mit z.B.:
    float XRangeEnd = XRangeStart + widthOfBitmap;

    dann gibt er mir die Fläche der nicht gedrehten Bitmap aus, da er nicht den Rotationswinkel mit berücksichtigt. Gibt es eine Funktion, mit der ich die Fläche der rotierten Bitmap (also welche Pixel nun genau von dem Bitmap verdeckt sind) berechnen lassen kann?

    Vielen Dank!

     
    Zuletzt bearbeitet: 12.04.2011
  2. Sabian, 12.04.2011 #2
    Sabian

    Sabian Junior Mitglied

    Hi,
    kenne mich leider nicht so gut mit der bildverarbeitung aus, aber ich dachte canvas.restore() setzt das canvas zurück, deswegen könnte es sein dass die Fläche der rotierten Bitmap der unrotierten entspricht.
    Falls das der Fall ist, solltest du die Fläche vor dem "restore" Aufruf abfragen.
    Aber wie gesagt, nur eine Vermutung :).
     
  3. ko5tik, 12.04.2011 #3
    ko5tik

    ko5tik Android-Experte

    IIRC verändert sich die Flache nicht wen man einen Bitmap rotiert. Oder geht es dir um den Bounding-Box?
     
  4. Duckemai, 12.04.2011 #4
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Danke erst mal für die Hilfestellungen.
    Mir geht es darum, dass ich eine Bitmap per Touchscreen markieren möchte.
    Dafür errechne ich die Lage der (waagerechten) viereckigen Bitmap wie folgt:

    float BitmapXRangeEnd = BitmapXRangeStart + width;
    float BitmapYRangeEnd = BitmapYRangeStart + height;
    ...

    //Es wurde genau auf ein Bitmap gedrückt:
    if (((BitmapXRangeStart < (int) event.getX()) && (BitmapXRangeEnd > (int) event.getX())) &&
    ((BitmapYRangeStart < (int) event.getY() && BitmapYRangeEnd > (int) event.getY()))){...//markiere Bitmap

    Doch das geht nun nicht mehr, nachdem ich rotate() angewendet habe, da die Bitmap nun nicht mehr waagerecht liegt, sondern durch das Drehen um die x/y-Koordinate (oben links) nun schräg liegt.

    Gibt es eine Formel oder Methode, wie ich berechnen kann, wo genau die Kanten der nun 'schief' liegenden Bitmap verlaufen, damit ich daraus errechnen kann, welche Pixel sich unter der Bitmap befinden? Nur so kann
    ich berechnen, ob eine Berührung des Bildschirms auch wirklich auf der Bitmap erfolgte.

    Ich hoffe, dass ich mich verständlich ausdrücken konnte...
     
    Zuletzt bearbeitet: 12.04.2011
  5. Duckemai, 12.04.2011 #5
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    @ ko5tik:

    Genau das ist das Problem. Die darunter liegende Fläche mit den Koordinaten für die Bitmap verändert sich nicht. Nur das "Image" dreht sich entsprechend der %-Zahl in rotate(). Wie kann ich aber nun das Koordinatenkreuz um ebenfalls diese Prozentzahl "mitdrehen"? Wenn jemand per Touchscreen das Image berührt, kann ich das ansonsten gar nicht registrieren, da die Koordianten für die Bitmap immer noch an der Stelle liegen, bevor sich das Image gedreht hat.

    Weiß jemand, wie so etwas geht?
     
    Zuletzt bearbeitet: 13.04.2011
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Android O Neue Fonts in XML Methode Android App Entwicklung 27.07.2017
[INFO] Neue Playstore Richtlinien im Mai 2017 Android App Entwicklung 19.05.2017
[UMFRAGE/INFO/DISKUSSION] Kotlin, die neue Programmiersprache für Android Android App Entwicklung 18.05.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Tage zwischen zwei Terminen berechnen Android App Entwicklung 22.02.2017
Wie realisiere ich eine zeitgesteuerte Berechnung und die Anzeige von PDF's Android App Entwicklung 21.02.2017
Viewelemente neu zeichnen Android App Entwicklung 04.01.2017
Aktuelle Position google maps Android App Entwicklung 20.12.2016
Du betrachtest das Thema "neue Position nach rotate() berechnen" im Forum "Android App Entwicklung",