Ich versuche, herauszufinden, wie man eine Menge dynamicly gezogenen Linien in Quartz 2D flach oder zusammenführen kann,„Flatten“ oder „Merge“ Quartz 2D gezogenen Linien
ich zufällige Linien im Laufe der Zeit bin Zeichnung auf meinem Bühne, ich füge neue Zeilenkoordinaten jedes Mal zu einem Array und zeichne das Array (mit meinem DrawRect und ich schiebe eine neue Zeile in meinem Array mit einem Timer und einem SetNeedDisplay, um alle vorherigen Zeilen plus die neue neu zu zeichnen)
jetzt das PROBLEM: nach einer Weile wird es langsam und langsam zu bekommen, weil die Arrays sehr lang werden, also ich sollte ich die Koordinaten in ein flaches Bild oder etwas zusammenführen und die Arrays zu k löschen eep es Gedächtnis gesund, aber wie mache ich das?
Dies ist mein aktueller Workflow:
Anruftimer
[NSTimer scheduledTimerWithTimeInterval: 0,1 Ziel: Selbstwähler: @selector (drawdrawdraw) userinfo: null Wiederholungen: YES];
Aktualisieren Sie die drawRect in meiner "drawdrawdraw" -Funktion
- (void) {drawdrawdraw [self setNeedsDisplay]; }
mein drawRect
-(void)drawRect:(CGRect)rect{ viewContext = UIGraphicsGetCurrentContext(); int count = [mijnArray_r_x count]; float r_x = (float)(random() % 768); [mijnArray_r_x insertObject:[NSNumber numberWithFloat:r_x] atIndex:count]; float r_y = (float)(random() % 1004); [mijnArray_r_y insertObject:[NSNumber numberWithFloat:r_y] atIndex:count]; float r_w = (float)(random() % 100); [mijnArray_r_w insertObject:[NSNumber numberWithFloat:r_w] atIndex:count]; float r_a = (float)(random() % 100); [mijnArray_r_a insertObject:[NSNumber numberWithFloat:r_a] atIndex:count]; CGContextSetLineWidth(viewContext, 2.0); CGContextSetStrokeColorWithColor(viewContext, [UIColor blackColor].CGColor); for (int k = 0; k <= count; k++) { float temp_x = [[mijnArray_r_x objectAtIndex: k] floatValue]; float temp_y = [[mijnArray_r_y objectAtIndex: k] floatValue]; float temp_w = [[mijnArray_r_w objectAtIndex: k] floatValue]; float temp_a = [[mijnArray_r_a objectAtIndex: k] floatValue]; CGPoint pointpointpoint = CGPointMake(temp_x, temp_y); CGPoint pointpointpointpoint = CGPointMake(temp_w, temp_a); CGContextMoveToPoint(viewContext, pointpointpoint.x, pointpointpoint.y); CGContextAddLineToPoint(viewContext, pointpointpoint.x - pointpointpointpoint.x, pointpointpoint.y + pointpointpointpoint.y); CGContextStrokePath(viewContext); } } }
funktioniert! Vielen Dank! : D – RecycleRobot