Comment se fait-il que mon code de dessin continue à produire des forms floues?

Peu importe ce que je fais, je n'arrive pas à comprendre pourquoi mes images continuent à être floues sur les écrans iOS. Peu importe que ce soit celui que j'ai créé dans un éditeur d'image ou un code de dessin, mais j'ai pensé que le code rendrait le problème beaucoup plus facile à parsingr. Je sais que si la ligne fait 1 pixel de large, elle apparaîtra floue, mais j'ai essayé plusieurs tailles de largeur de ligne avec des résultats similaires. Que puis-je faire pour m'assurer que mes charts sont nets?

UIGraphicsBeginImageContext(CGSizeMake(1000, 1000)); UIBezierPath *bezier = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 1000, 1000)]; [[UIColor greenColor]set]; [bezier fill]; [[UIColor blackColor]set]; bezier = [UIBezierPath bezierPath]; [bezier setLineWidth:1.5]; //I sortinged .5, 1, 1.5, & 2 with similar results [bezier moveToPoint:CGPointMake(450, 500)]; [bezier addLineToPoint:CGPointMake(500, 400)]; [bezier addLineToPoint:CGPointMake(550, 500)]; [bezier closePath]; [bezier stroke]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

entrez la description de l'image ici

    UIGraphicsBeginImageContext :

    … équivaut à appeler la fonction UIGraphicsBeginImageContextWithOptions avec le paramètre opaque défini sur NO et un facteur d'échelle de 1.0 .

    Cependant, UIGraphicsBeginImageContextWithOptions définit son paramètre d' scale comme:

    échelle
    Le facteur d'échelle à appliquer à l'image bitmap. Si vous spécifiez une valeur de 0.0 , le facteur d'échelle est défini sur le facteur d'échelle de l'écran principal du périphérique.

    Donc, votre utilisation de UIGraphicsBeginImageContextWithOptions crée un context avec une échelle de 1.0 . C'est le cas par exemple de l'iPad Mini de l'année dernière, mais tous les appareils de la class rétina ont une échelle «native» de 2.0 – deux pixels par point logique. UIGraphicsBeginImageContextWithOptions introduit le cas particulier de 0.0 pour que vous n'ayez pas à vous [[UIScreen mainScreen] scale] d'get le bon numéro pour cet appareil (bien que [[UIScreen mainScreen] scale] soit un moyen facile).

    UIGraphicsBeginImageContext(CGSizeMake(1000, 1000)) donc votre appel sortant en UIGraphicsBeginImageContext(CGSizeMake(1000, 1000)) en:

     UIGraphicsBeginImageContextWithOptions(CGSizeMake(1000, 1000), NO, 0.0) 

    Sinon, le context que vous créez aura un quart de pixels de plus que l'écran dans l'espace correspondant.