Eksperymentuję z tworzeniem prostej aplikacji do malowania palcami na iPadzie. Potrafię poprawnie narysować ścieżkę do ekranu, ale chcę mieć opcję, która całkowicie czyści ekran ze wszystkich narysowanych ścieżek. Kod, który aktualnie posiadam, czyści kontekst, ale kiedy wywołam blok kodu rysowania, wszystkie ścieżki pojawiają się ponownie na ekranie.
- (void)drawRect:(CGRect)rect
{
//Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
if(clearContext == 0){
CGContextSetLineWidth(context, 6);
CGContextSetRGBStrokeColor(context, 1, 0, 0, 1);
CGContextAddPath(context, drawingPath);
CGContextStrokePath(context);
}
if(clearContext == 1){
//This is the code I currently have to clear the context, it is clearly wrong
//Just used as experimentation.
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextAddPath(context, drawingPath);
CGContextStrokePath(context);
clearContext = 0;
}
}
2 odpowiedzi
Zakładam, że drawingPath to CGPath… czy kasujesz tę CGPath? to może być przyczyną twojego problemu
W akcji, aby oczyścić swoją drogę, wykonaj:
CGPathRelease(drawingPath);
drawingPath = CGPathCreateMutable();
[self setNeedsDisplay];
I wykonaj normalny rysunek, który zwykle robisz. jeśli ścieżka jest pusta, nic nie zostanie narysowane
Wyczyść wszystkie rysunki CGContextRef:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, self.bounds); //self.bounds = your drawing base frame
[self setNeedsDisplay];
Podobne pytania
Nowe pytania
iphone
NIE używaj tego znacznika, chyba że adresujesz konkretnie iPhone'a i / lub iPoda touch firmy Apple. W przypadku pytań niezależnych od sprzętu użyj tagu [ios]. Więcej tagów do rozważenia to [xcode] (ale tylko jeśli pytanie dotyczy samego IDE), [swift], [objective-c] lub [cocoa-touch] (ale nie [cocoa]). Proszę powstrzymać się od pytań dotyczących iTunes App Store lub iTunes Connect. Jeśli używasz języka C #, oznacz tagiem [mono].