如何在创建CGContextRef后增加它的大小。
if(UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 0);
}
else {
UIGraphicsBeginImageContext(CGSizeMake(width, height));
}
CGContextRef ctr = UIGraphicsGetCurrentContext();
我可以更改ctr的大小吗?
答案 0 :(得分:1)
尝试在没有if-else条件的情况下执行此操作。使用最后一行代码创建一个CGContext。
这是一个简单的例子
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGContextSetLineWidth(context, 2.0);
CGContextMoveToPoint(context, 100,100);
CGContextAddLineToPoint(context, 200, 200);
CGContextStrokePath(context);
}
答案 1 :(得分:0)
我和你的问题一样。我开发了一个函数来调整CGContext的大小:
void MPResizeContextWithNewSize(CGContextRef *c, CGSize s) {
size_t bitsPerComponents = CGBitmapContextGetBitsPerComponent(*c);
size_t numberOfComponents = CGBitmapContextGetBitsPerPixel(*c) / bitsPerComponents;
CGContextRef newContext = CGBitmapContextCreate(NULL, s.width, s.height, bitsPerComponents, sizeof(UInt8)*s.width*numberOfComponents,
CGBitmapContextGetColorSpace(*c), CGBitmapContextGetBitmapInfo(*c));
// Copying context content
CGImageRef im = CGBitmapContextCreateImage(*c);
CGContextDrawImage(newContext, CGRectMake(0, 0, CGBitmapContextGetWidth(*c), CGBitmapContextGetHeight(*c)), im);
CGImageRelease(im);
CGContextRelease(*c);
*c = newContext;
}
我不知道它是否适用于UIGraphicsBeginImageContext(...)
函数提供的上下文,但如果您使用CGBitmapContextCreate
手动创建上下文,则可以使用。
希望自从你提出要求后有所帮助...