2009-07-24 4 views
0

У меня есть подкласс UIView (TraceView), который имеет ширину 200 на 100, и я пытаюсь нарисовать на нем пиксель за пикселем. В этом случае я пытаюсь нарисовать горизонтальную синюю линию, которая проходит 75% пути. Вместо этого я получаю две вертикальные синие линии (один на краю, один посередине), которые идут на 75% пути вверх. Похоже, что CGLayer, который я использую, повернулся на 90 градусов и уменьшился на 50%. Что я могу сделать, чтобы исправить это?CGLayer появляется неправильно

В верхней части файла .m:

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

@implementation TraceView 

int theImage[WORLD_WIDTH][WORLD_HEIGHT]; 

Перекрытие 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); 

} 

ответ

1

ОК, я получил это работает, глупо меня.

Он работает нормально, если я обрабатываю массив как объект [y] [x], а не объект [x] [y].