iPhone:石英优化绘图
我已经创建了一个CG上下文,宽800像素,高1200像素。我已经在已经转换(缩放、平移和旋转)的上下文上创建了CGLayer。因此,在某一点上,由于CGLayer比上下文更大,并且已经被翻译、旋转等,因此并非该CGLayer的所有部分都在上下文中。见下图: 如图所示,该层的某些部分位于上下文区域之外。当我使用iPhone:石英优化绘图,iphone,iphone-sdk-3.0,quartz-graphics,Iphone,Iphone Sdk 3.0,Quartz Graphics,我已经创建了一个CG上下文,宽800像素,高1200像素。我已经在已经转换(缩放、平移和旋转)的上下文上创建了CGLayer。因此,在某一点上,由于CGLayer比上下文更大,并且已经被翻译、旋转等,因此并非该CGLayer的所有部分都在上下文中。见下图: 如图所示,该层的某些部分位于上下文区域之外。当我使用 CGContextDrawLayerInRect(context, superRect, objectLayer); 它将渲染整个层,包括上下文之外不必要的部分 我的问题是:如果我能让
CGContextDrawLayerInRect(context, superRect, objectLayer);
它将渲染整个层,包括上下文之外不必要的部分
我的问题是:如果我能让它只画上下文中的相关部分,我就能让它快速渲染并节省内存
有办法吗
注意:图层包含透明度。
请不要给出不涉及CGlayer的解决方案
提前谢谢。您能使用CATILDELAYER吗?这应该是谷歌地图中的延迟加载
+(Class)layerClass
{
return [CATiledLayer class];
}
-(id)init {
CATiledLayer *tiledLayer = (CATiledLayer *) self.layer;
tiledLayer.tileSize = CGSize(x,x);
tiledLayer.levelsOfDetail = y;
tiledLayer.levelsOfDetailBias = z;
}
你能使用CATiledLayer吗?这应该是谷歌地图中的延迟加载
+(Class)layerClass
{
return [CATiledLayer class];
}
-(id)init {
CATiledLayer *tiledLayer = (CATiledLayer *) self.layer;
tiledLayer.tileSize = CGSize(x,x);
tiledLayer.levelsOfDetail = y;
tiledLayer.levelsOfDetailBias = z;
}
您可以使用CGContextClip/-ToMask/-ToRect剪裁上下文 但我认为,简单地将像素“转储”到上下文中实际上比计算剪裁边界和“少画”更便宜/更快
多余的图形(通常)不会占用额外的内存。您可以使用CGContextClip/-ToMask/-ToRect剪裁上下文 但我认为,简单地将像素“转储”到上下文中实际上比计算剪裁边界和“少画”更便宜/更快
多余的图形(通常)不会占用额外的内存。否,不幸的是,我必须使用CGLayer。其中一个原因是我必须在屏幕外写作。但无论如何,我找不到一个简单的代码来解释CATiledLayer是如何工作的。这似乎是苹果公司记录的那些晦涩难懂的函数之一。@Mike:它既不是晦涩难懂的函数,也不是一个函数,它是CALayer子类。我发现这个例子在过去很有用,它使用PDF函数绘制,但在其他方面很好地说明了平铺层。不,不幸的是我必须使用CGLayer。其中一个原因是我必须在屏幕外写作。但无论如何,我找不到一个简单的代码来解释CATiledLayer是如何工作的。这似乎是苹果公司记录的那些晦涩难懂的函数之一。@Mike:它既不是晦涩难懂的函数,也不是一个函数,它是CALayer子类。我发现这个例子在过去很有用,它使用PDF函数绘制,但在其他方面很好地说明了平铺层。