iPhone:我想画一条蓝线,但它一直都是红色,为什么?

时间:2009-07-26 20:36:05

标签: iphone

有颜色空间的东西?注意;如果我直接在当前上下文中绘制它会变黑;在位图上下文中它变成红色。

示例:

CGContextRef context;// = UIGraphicsGetCurrentContext(); 
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
void *bitmapData = malloc(getWidth()*4*getHeight());
memset(bitmapData, 0, getWidth()*4*getHeight()); 
context = CGBitmapContextCreate (bitmapData, getWidth(), getHeight(), 8, 
                       getWidth()*4, colorSpace, kCGImageAlphaPremultipliedFirst); 

CGContextSetStrokeColorWithColor(context, [blue CGColor]);
CGContextMoveToPoint(context, 0.0,0.0 ); 
CGContextAddLineToPoint(context, 480.0,300.0); 
CGContextStrokePath(context);

CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, bitmapData, getWidth()*4*getHeight(), NULL);
CGColorRenderingIntent intent = kCGRenderingIntentDefault;
CGImageRef image2 = CGImageCreate(getWidth(), getHeight(), 8, 32, getWidth()*4, colorSpace, bitmapInfo,
                                   provider, NULL, NO, intent); 

CGContextDrawImage(UIGraphicsGetCurrentContext(),rect, image2);

编辑(一天后); 好的,我重新启动(=在XCode中创建了一个新项目,复制/粘贴了此示例中的代码)整个项目,然后它正在运行。任何人都知道这有可能吗?

5 个答案:

答案 0 :(得分:1)

尝试:

[[UIColor blueColor] set];
在你中风前

答案 1 :(得分:0)

我见过这个。我敢打赌你的问题不会在模拟器中重现。

这是一个iPhone端错误。

请参阅qa1509并使用列表#2中的代码。

答案 2 :(得分:0)

尝试将kCGBitmapByteOrderDefault更改为kCGBitmapByteOrder32Big,或将kCGBitmapByteOrder32Little失败。

答案 3 :(得分:0)

首先尝试删除上下文。使用memset(mem, -1, nbytes)或CG函数。

答案 4 :(得分:0)

我不知道你从哪里得到'蓝色'。尝试制作蓝色:

CGColorRef myBlue = CGColorCreateGenericRGB(0,0,1,1);
CGContextSetStrokeColorWithColor(context, myBlue);