Jestem nowy w Core Graphics i staram się rysować koła. Mogą być przezroczyste (tylko obrys) i wypełnione kolorem obrysu. Tak więc metoda wygląda następująco:Podstawowe obrazy graficzne niskiej jakości
+ (UIImage *)iconImageWithColor: (UIColor *)markColor strokeOnly:(BOOL)strokeOnly
{
CGRect rect = CGRectMake(0.0f, 0.0f, 20.0f, 20.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGPathRef clippingPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:7.5f].CGPath;
CGContextAddPath(context, clippingPath);
CGContextClip(context);
CGContextSetFillColorWithColor(context, strokeOnly == YES ? [[UIColor clearColor] CGColor] : [markColor CGColor]);
CGContextFillRect(context, rect);
CGPathRef path = CGPathCreateWithRoundedRect(rect, 10.f, 10.f, NULL);
[markColor setStroke];
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathFillStroke);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Wynik jest dziwny - wygląda na to, że rozdzielczość obrazu jest bardzo niska. Czy jest możliwe, aby obraz wynikowy wyglądał dobrze na wyświetlaczu Retina?
Dodaj tę linię przed rysowaniem rect: CGContextSetLineWidth (context, 1.0); Możesz zaktualizować 1.0 do swoich wymagań. Jego szerokość linii wyciągania. – Mrunal