Freihand-Bild Beschneiden im Bitmap-Bereich

8

Ich versuche, ein Bild freihändig zuzuschneiden, damit ich auf das Bild malen kann. Aber es geht außerhalb der Bitmap-Region. Ich möchte nur einschränken, dass der Benutzer nur innerhalb der Bitmap-Region zeichnen kann, siehe unten Screenshot.

Ich versuche, Funktionen wie das Photoshop-Lasso-Tool zu implementieren.

Die Zeichnung außerhalb des Ansichtsbereichs, die eine falsche Ausgabe erzeugt.

Ausgabe

Code @

onDraw

%Vor%

onCrop

%Vor%

schlage mir vor, mein Ziel zu erreichen.

    
RobinHood 21.06.2013, 06:58
quelle

3 Antworten

0

Es gibt einen Weg, um Ihr Ziel zu erreichen.

Führen Sie die folgenden Schritte aus:

1) Erstellen Sie ein Bild, das so aussieht, als sollte der innere Teil des Bildausschnitts transparent sein und der äußere Teil sollte der Hintergrund der Leinwand sein, sehen Sie unter Bild nach.

2) Zeichnen Sie dieses Bild oben auf Ihrer Leinwand.

3) Zeichnen Sie etwas auf Ihrer Leinwand und zeichnen Sie dieses Bild oben auf die Leinwand.

Bild:

    
Niranj Patel 21.06.2013 07:48
quelle
0

Sie können alle Berührungsereignisse ignorieren, die sich außerhalb Ihrer Bildansicht befinden. Merken Sie sich den letzten Veranstaltungsort in Ihrer Bildansicht und verbinden Sie ihn mit dem nächsten Veranstaltungsort innerhalb der Ansicht. Dies sollte funktionieren, wenn beide Ereignisse Teil einer einzelnen Bewegung sind (ohne den Finger zu heben), aber es kann komplizierter sein, wenn die Zeichnung außerhalb Ihrer Ansicht ausgeführt wird und dann eine neue Zeichnung beginnt. Versuchen Sie auch, diesen Fall zu erfassen.

    
stan0 24.09.2013 12:14
quelle
0

späte Antwort, aber verwenden Sie voll für andere u kann overmeasure Methode überschreiben und setzen Sie Ihre Bild Bitmap Breite und Höhe in dieser Methode und Größe Ihrer Leinwand so jetzt können Sie nur in Ihrem canvas.so Ihr Bild center.it nur für Drawpath kommen auf Ihrer Bitmap.

%Vor%

und ändern Sie dann Ihre Oncrop-Methode, so dass Sie es esaly tun können.

%Vor%     
Kishan patel 05.04.2016 10:45
quelle