Löschen mit Pinsel in GLPaint

8

Als Teil der Änderung von GLPaint versuche ich Löschfunktionen hinzuzufügen, bei denen der Benutzer einen Radiergummi-Knopf auswählen und den bemalten Bereich genauso löschen kann wie das Malen.

Ich versuche eine bedingte Anweisung innerhalb der "renderLineFromPoint:(CGPoint)start toPoint:(CGPoint)end" -Methode zu haben, damit ich überprüfen kann, ob der Strich zum Malen oder Löschen gedacht ist.

Zum Löschen weiß ich nicht, wie ich die Parameter " start " und " end " zum Löschen verwenden kann. Gibt es einen Methodenaufruf in OpenGL wie glClear() , der diese beiden Parameter akzeptiert und löscht?

Jeder Zeiger wird sehr hilfreich sein. Danke.

    
blacky 29.10.2010, 03:40
quelle

4 Antworten

9

Entlang derselben Ader wie Mit dem Pinsel in GLPaint löschen , Sie könnten das

wiederverwenden %Vor%

Methode mit der Bedingung:

%Vor%

über dem Code:

%Vor%

Hinweis: Sie müssen isEraserBrushType implementieren und pinselColourRed, brushColourGreen und brushColourBlue irgendwie speichern.

    
zlog 12.01.2011, 15:03
quelle
4

Ich denke, ich kann dieses Problem lösen, obwohl nicht sehr gut.

Sie können eine neue Funktionskopie von "renderLineFromPoint" wie folgt erstellen:

%Vor%

Mein Englisch ist schlecht. Kannst du verstehen, was ich gesagt habe? Hoffe, dass diese Ihnen helfen können.

    
qqcool 11.01.2011 04:59
quelle
0

Ich habe versucht, die angenommene Antwort zu verwenden, aber sie würde in einem quadratischen Muster löschen, während ich mit meinem eigenen Pinsel löschen wollte. Stattdessen habe ich eine andere Mischfunktion verwendet.

%Vor%

Dies funktioniert so, dass die ankommende (Quell-) Farbe mit zero multipliziert wird, um vollständig zu verschwinden, was bedeutet, dass Sie eigentlich nichts Neues malen. Dann wird die Zielfarbe auf (1 - Quell-Alpha) eingestellt. Wo auch immer die Farbe des Pinsels ist, hat das Ziel keine Farbe.

    
Ben Taylor 10.07.2014 05:01
quelle
-2

Eine weitere Idee: Wenn der Hintergrund Ihrer Ansicht rein schwarz ist, können Sie einfach [ self setBrushColorWithRed:0.0 green:0.0 blue:0.0] aufrufen und dann renderPoint: ToPint: - Dies wird schwarz zeichnen (und der Benutzer könnte denken, dass er tatsächlich löscht.

    
arin 02.07.2011 19:50
quelle

Tags und Links