改变CGBitmapContext的界限?

时间:2012-03-14 16:19:02

标签: objective-c macos core-graphics quartz-graphics quartz-2d

以下是创建CGBitmapContext的常用方法,在创建时我们设置了上下文边界。

CGContextRef contextbitmap = CGBitmapContextCreate(NULL, width, height,8, 
4 * width,
devicecolorspace,                  
kCGImageAlphaPremultipliedFirst);

我正在寻找更新上下文界限的方法吗?

2 个答案:

答案 0 :(得分:2)

你做不到。创建一个新的位图上下文。您可以通过从中创建图像(CGBitmapContextCreateImage)然后将该图像绘制到新上下文中来将旧图像的内容传输到新图像。

答案 1 :(得分:1)

核心图形上下文没有“边界”。它有一个坐标系,基本上是无限的。例如,您可以执行CGContextFillRect(gc, CGRectInfinite)

位图上下文具有底层位图,位图中的每个像素都映射到上下文坐标系中明确定义的区域。 (该区域始终是平行四边形。)

初始映射在创建位图上下文时,会将像素(统称)映射到矩形CGRectMake(0, 0, width, height)

如果要更改此映射,请更改上下文的当前转换矩阵(CTM)。例如,如果要将像素映射到矩形CGRectMake(-50, -50, 100, 100),请执行以下操作:

CGContextScaleCTM(gc, width / 100.0f, height / 100.0f);
CGContextTranslateCTM(gc, -50, -50);