2009-07-24 8 views
0

J'ai une sous-classe UIView (TraceView) qui mesure 200 de large sur 100 et j'essaie de dessiner pixel par pixel. Dans ce cas, j'essaie de tracer une ligne horizontale bleue qui traverse 75% de la largeur. Au lieu de cela, je reçois deux lignes bleues verticales (une au bord, une au milieu), qui vont à 75% du haut. Il semble que le CGLayer que j'ai utilisé ait été tourné de 90 degrés et rétréci de 50%. Que puis-je faire pour corriger cela?CGLayer dans le mauvais sens

En haut du fichier .m:

#define WORLD_WIDTH 200 
#define WORLD_HEIGHT 100 
#define ABGR_BYTES 4 

@implementation TraceView 

int theImage[WORLD_WIDTH][WORLD_HEIGHT]; 

Redéfinition drawRect:

- (void)drawRect:(CGRect)rect { 

    CGContextRef theViewContext = UIGraphicsGetCurrentContext(); 
    CGLayerRef theCGLayer = CGLayerCreateWithContext(theViewContext, rect.size, nil); 
    CGContextRef theCGLayerContext = CGLayerGetContext(theCGLayer); 

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef bitmapContext = CGBitmapContextCreate(theImage, WORLD_WIDTH, WORLD_HEIGHT, 8, WORLD_WIDTH * ABGR_BYTES, colorSpace, kCGImageAlphaPremultipliedLast); 

    // is ABGR 
    for(int i=0;i<150;i++) { 
     theImage[i][0]=0xFFFF0000; 
    } 

    CGImageRef image = CGBitmapContextCreateImage(bitmapContext); 
    CGContextDrawImage(theCGLayerContext, rect, image); 
    CGContextDrawLayerInRect(theViewContext, rect, theCGLayer); 

} 

Répondre

1

OK, je l'ai travail, silly me.

Cela fonctionne bien si je traite le tableau comme l'image [y] [x] plutôt que l'image [x] [y].