有颜色空间的东西?注意;如果我直接在当前上下文中绘制它会变黑;在位图上下文中它变成红色。
示例:
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中创建了一个新项目,复制/粘贴了此示例中的代码)整个项目,然后它正在运行。任何人都知道这有可能吗?
答案 0 :(得分:1)
尝试:
[[UIColor blueColor] set];
在你中风前。
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试将kCGBitmapByteOrderDefault
更改为kCGBitmapByteOrder32Big
,或将kCGBitmapByteOrder32Little
失败。
答案 3 :(得分:0)
首先尝试删除上下文。使用memset(mem, -1, nbytes)
或CG函数。
答案 4 :(得分:0)
我不知道你从哪里得到'蓝色'。尝试制作蓝色:
CGColorRef myBlue = CGColorCreateGenericRGB(0,0,1,1);
CGContextSetStrokeColorWithColor(context, myBlue);