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.
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.
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.
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.
Tags und Links iphone