2010-11-23 7 views
7

Je veux créer un CGImageRef et y dessiner des points.Dessiner dans CGImageRef

Quel contexte utiliser pour créer un CGImageRef vide et pouvoir dessiner dessus. CGContextRef ou CGBitmapContextRef?

Si vous pouvez fournir du code pour créer une image CGImageRef vide et dessiner, j'apprécierais.

Répondre

19
#define HIRESDEVICE (((int)rintf([[[UIScreen mainScreen] currentMode] size].width/[[UIScreen mainScreen] bounds].size.width)>1)) 


- (CGImageRef) blerg 
    { 
    CGFloat imageScale = (CGFloat)1.0; 
    CGFloat width = (CGFloat)180.0; 
    CGFloat height = (CGFloat)180.0; 

    if (HIRESDEVICE) 
     { 
     imageScale = (CGFloat)2.0; 
     } 

    // Create a bitmap graphics context of the given size 
    // 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef context = CGBitmapContextCreate(NULL, width * imageScale, height * imageScale, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast); 


    // Draw ... 
    // 
    CGContextSetRGBFillColor(context, (CGFloat)0.0, (CGFloat)0.0, (CGFloat)0.0, (CGFloat)1.0); 
    // … 


    // Get your image 
    // 
    CGImageRef cgImage = CGBitmapContextCreateImage(context); 

    CGColorSpaceRelease(colorSpace); 
    CGContextRelease(context); 

    return cgImage; 
    } 
+0

merci l'homme a beaucoup aidé! – Cyprian

+2

Pour une raison quelconque, j'ai toujours eu une zone grise vierge lorsque j'ai essayé ceci, peu importe ce que je définis les valeurs de couleur de remplissage. – micahhoover

+3

J'utiliserais 'UIGraphicsBeginImageContextWithOptions' sur iOS4 ou plus récent. De cette façon, pas besoin de prendre en compte le facteur d'échelle. – bioffe