我已经创建了一个CG上下文,它宽800像素,高度1200像素。我已经在这个已经被转换的上下文上创建了CGLayer (缩放、翻译和旋转)。因此,在某种程度上,由于CGLayer比上下文大,并且已经被翻译、旋转等,所以并不是CGLayer的所有部分都在上下文中。见下一张图片:
从图片中可以看到,图层的某些部分落在上下文区域之外。当我呈现最后的作文时
CGContextDrawLayerInRect(context, superRect, objectLayer);它将呈现整个层,包括上下文之外的那些不必要的部分。
我的问题是:如果我能让它只绘制上下文中的相关部分,我就可以使它快速呈现并节省内存。
有什么办法吗?
注意:层包含透明度.
请不要给出不涉及CGLayers的解决方案。
提前谢谢。
发布于 2009-11-21 01:52:25
你能用CATiledLayer吗?这应该是懒惰加载在广场阿拉-谷歌地图..。
+(Class)layerClass
{
return [CATiledLayer class];
}
-(id)init {
CATiledLayer *tiledLayer = (CATiledLayer *) self.layer;
tiledLayer.tileSize = CGSize(x,x);
tiledLayer.levelsOfDetail = y;
tiledLayer.levelsOfDetailBias = z;
}发布于 2009-12-21 20:37:48
您可以使用CGContextClip/-ToMask/-ToRect裁剪上下文。
但我认为,简单地将像素“转储”到上下文中比计算裁剪界和“绘制更少”要便宜/快。
多余的绘图(通常)不会占用额外的内存.
https://stackoverflow.com/questions/1771604
复制相似问题