Zeichnen um CGContextRef, um die Pixelierung zu entfernen

Derzeit habe ich ein grafisches Problem mit dem Zeichnen kleiner Punkte.

Ich stelle fest, dass in den meisten professionellen Kalenderanwendungen der Ereigniskalender-Identifikator ein kleiner Punkt ist, dessen Farbe die Farbe des Ereigniskalenders ist.

Ich bin am Punkt meiner Anwendung aktuell, in dem ich einen BESSEREN Punkt zeichnen muss. Hier ist ein Foto von dem, was ich meine.

Es mag hier nicht auffallen, aber der farbige Punkt ist ziemlich pixelig, wenn er auf meinem Handy ist. Ich möchte die Pixelierung entfernen.

Ich habe ein Tutorial von Ray Wenderlichs Website durchgesehen:Ray Wenderlich Core Graphics.

Folgendes habe ich herausgeholt, um den Punkt zu zeichnen:

UIGraphicsBeginImageContext(cell.imageViewPic.bounds.size);
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(contextRef, [[event calendar] CGColor]);
CGContextFillEllipseInRect(contextRef,(CGRectMake (0.f, 0.f, cell.imageViewPic.bounds.size.width, cell.imageViewPic.bounds.size.height)));

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
cell.imageViewPic.image = image;

Das implementiert also tatsächlich den Kreis, aber ich habe dies hinzugefügt, um eine kleine Linie um den Kreis zu zeichnen, um die Pixelung zu beseitigen, aber nicht zu gehen.

CGPoint startPoint = CGPointMake(cell.imageViewPic.frame.origin.x, cell.imageViewPic.frame.origin.y + cell.imageViewPic.frame.size.height - 1);
CGPoint endPoint = CGPointMake(cell.imageViewPic.frame.origin.x + cell.imageViewPic.frame.size.width - 1, cell.imageViewPic.frame.origin.y + cell.imageViewPic.frame.size.height - 1);
UIColor* color = [UIColor blackColor];
CGContextSaveGState(contextRef);
CGContextSetLineCap(contextRef, kCGLineCapSquare);
CGContextSetStrokeColorWithColor(contextRef, color.CGColor);
CGContextSetLineWidth(contextRef, 10.0);
CGContextMoveToPoint(contextRef, startPoint.x + 0.5, startPoint.y + 0.5);
CGContextAddLineToPoint(contextRef, endPoint.x + 0.5, endPoint.y + 0.5);
CGContextStrokePath(contextRef);
CGContextRestoreGState(contextRef);

Alles zusammen sieht so aus ...

UIGraphicsBeginImageContext(cell.imageViewPic.bounds.size);
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(contextRef, [[event calendar] CGColor]);
CGContextFillEllipseInRect(contextRef,(CGRectMake (0.f, 0.f, cell.imageViewPic.bounds.size.width, cell.imageViewPic.bounds.size.height)));

CGPoint startPoint = CGPointMake(cell.imageViewPic.frame.origin.x, cell.imageViewPic.frame.origin.y + cell.imageViewPic.frame.size.height - 1);
CGPoint endPoint = CGPointMake(cell.imageViewPic.frame.origin.x + cell.imageViewPic.frame.size.width - 1, cell.imageViewPic.frame.origin.y + cell.imageViewPic.frame.size.height - 1);
UIColor* color = [UIColor blackColor];
CGContextSaveGState(contextRef);
CGContextSetLineCap(contextRef, kCGLineCapSquare);
CGContextSetStrokeColorWithColor(contextRef, color.CGColor);
CGContextSetLineWidth(contextRef, 10.0);
CGContextMoveToPoint(contextRef, startPoint.x + 0.5, startPoint.y + 0.5);
CGContextAddLineToPoint(contextRef, endPoint.x + 0.5, endPoint.y + 0.5);
CGContextStrokePath(contextRef);
CGContextRestoreGState(contextRef);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
cell.imageViewPic.image = image;

Der Kreis wird noch gezeichnet, aber es wird kein "Strich" gezeichnet.

Wenn jemand einen Hinweis geben möchte, wie dieses Pixelproblem gelöst wird, posten Sie ihn bitte!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage