Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIGraphicsGetCurrentContext出错_Iphone_Iphone Sdk 3.0 - Fatal编程技术网

Iphone UIGraphicsGetCurrentContext出错

Iphone UIGraphicsGetCurrentContext出错,iphone,iphone-sdk-3.0,Iphone,Iphone Sdk 3.0,我一直试图用石英在一个图层上写一个图像,但我看到的都是完全空白的图像。。。这是密码 CGContextRef context = UIGraphicsGetCurrentContext(); CGRect backRect = CGRectMake (0, 0, image.size.width, image.size.height); CGLayerRef backLayer = CGLayerCreateWithContext (context, image.size, NULL);

我一直试图用石英在一个图层上写一个图像,但我看到的都是完全空白的图像。。。这是密码

CGContextRef context = UIGraphicsGetCurrentContext();

CGRect backRect  = CGRectMake (0, 0, image.size.width, image.size.height);

CGLayerRef backLayer = CGLayerCreateWithContext (context, image.size, NULL);
CGContextRef backContext = CGLayerGetContext (backLayer);

CGContextDrawImage(backContext, backRect, image.CGImage);
你们能告诉我这个代码有什么问题吗

图像是用相机拍摄的图像

是的,图像在那里。如果我将上述代码替换为

UIGraphicsBeginImageContext(image.size);  
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; 
我看到了图像。但我必须把它放在一层,因为它是一个精灵。

  • 你确定这些图像是在正确的地方找到的吗
  • 此iphone支持图像格式和颜色编号吗
  • 图像没有被其他图形调用透支
  • 在最坏的情况下,未检测到的内存泄漏会导致图像在内存中被覆盖

对于您创建的图层,您实际上并没有做任何事情。您应该使用cgContextDrawLayerPoint()或cgContextDrawLayerRect()或

您可以添加以下内容:

CGContextDrawLayerInRect(context, backRect, backLayer);


请注意,CGLayer与CALayer不同。CALayer是可以通过核心动画来设置动画的,其中CGLayer只是一个方便的工具,用于将静态的2-D核心图形绘制在一起。因为你是指这是一个精灵,我假设你会想动画这周围,所以CALayer将是更好的选择


我建议你读一下这本书,尤其是这本书。CALayers将在动画方面提供非常好的性能,因为它们是GPU加速的,不需要每一帧都重新绘制。核心图形不会为动画提供接近可接受的性能,因为重画是昂贵的操作。

一切都在那里。如果我在代码前面加上UIGraphicsBeginImageContext(image.size)行;[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];图像绘制正确。CGContextDrawImage(backContext,backRect,image.CGImage);?它不是在上下文中绘制图层吗?不,您是在创建的新图层上绘制图像,但是图层本身应该添加到当前上下文中。啊,好的。我添加了一行CGContextDrawLayerAtPoint(context,CGPointMake(0,0),backLayer);在代码末尾,但我仍然得到空图像。。。我所有的头发在绝望中变得灰白。。。
CGContextDrawLayerAtPoint(context,CGPointZero,backLayer);