Ich habe eine Reihe von 'Linie' Objekte - jeder speichert Informationen über eine Linie mit Core Graphics gezeichnet. Das Problem ist, dass, obwohl es mehrere Linienobjekte gibt, die jeweils eine eindeutige Farbe und Strichbreite haben, alle Linien unter der gleichen Farbe und Strichbreite gezeichnet werden.Versuchen, eindeutige CoreGraphics (iphone) States für jeden Strich
Jedes Linienobjekt verfügt über Attribute wie Strichfarbe, Strichbreite und ein NSMutableArray von CGPoints. In meiner DrawRect-Methode habe ich einen NSEnumerator-Iterator, der durch jeden CGPoint jedes Linienobjekts und eine while-Schleife arbeitet, die das obige für jedes Linienobjekt in meiner Sammlung ausführt. Zu Beginn jeder neuen Zeile setze ich die Strichfarbe und -dicke mit CGContext-Methoden (Code unten). Wie kann ich jede Linie mit einer eigenen Farbe zeichnen?
- (void)drawRect:(CGRect)rect {
if(hasDrawnBefore){
myContext = UIGraphicsGetCurrentContext();
CGContextSetLineCap(myContext, kCGLineCapRound);
int numberOfLines = [myLines count];
int h = 0;
while(h < numberOfLines){
CGContextSetStrokeColorWithColor(myContext, [[[myLines objectAtIndex:h] lineColor] CGColor]);
CGContextSetLineWidth(myContext, [[myLines objectAtIndex:h] lineThickness]);
NSLog(@"<---------------------- Changed Color and Stroke-Width! ------------------------>");
NSEnumerator *myEnumerator = [[[myLines objectAtIndex:h] linePoints] objectEnumerator];
PointObject* object;
int enumIndex = 0;
while ((object = [myEnumerator nextObject])) {
if(enumIndex == 0){
CGContextMoveToPoint(myContext, object.coordX, object.coordY);
}else{
CGContextAddLineToPoint(myContext, object.coordX, object.coordY);
}
enumIndex++;
}
NSLog(@"Just Iterated on the %i th line of %i lines", h, numberOfLines);
h++;
}
CGContextStrokePath(myContext);
NSLog(@"DRAWING");
}else{
NSLog(@"No Drawings Yet");
}
}