【发布时间】:2023-03-07 18:55:01
【问题描述】:
-(CGImageRef)drawing{
CGContextRef context;
GLubyte *bitmapData;
size_t width, height;
width=super.size.width;
height=super.size.height;
bitmapData = (GLubyte *) calloc(width * height * 4, sizeof(GLubyte));
context = CGBitmapContextCreate(bitmapData, width, height, 8, width * 4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
if (context==NULL){
NSLog(@"context not created?! (o_*) ");
}
free(bitmapData);
CGContextSetRGBFillColor (context, 1, 0, 0, 1);
CGContextFillRect (context, CGRectMake (0, 0, 200, 100 ));
CGContextSetRGBFillColor (context, 0, 0, 1, .5);
CGContextFillRect (context, CGRectMake (0, 0, 100, 200 ));
CGImageRef myImage = CGBitmapContextCreateImage (context);
CGContextRelease(context);
return myImage;
}
所以我尝试在上下文中渲染屏幕外的绘图,然后将其作为CGImageRef 获取,但由于某种原因,上下文始终为 NULL,并且当我读取图像输出时应用程序崩溃。
谁能解释一下这里发生了什么和/或指出一个可行的例子。
【问题讨论】:
-
控制台有什么东西吗?可能会出现一条消息,说明尝试创建上下文时出了什么问题。
-
@rmaddy only
CGContextSetRGBFillColor: invalid context 0x0 但应该存在,因为上下文为空。除此之外什么都没有......这就是让我困惑的地方 -
尝试用
CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB)替换您的色彩空间。顺便说一句 - 你需要释放色彩空间。 -
width和height有多大?
标签: objective-c ios cocoa-touch core-graphics quartz-2d