使用UIGraphicsPushContext创建的上下文不显示渲染图像

时间:2010-10-26 10:00:03

标签: objective-c core-graphics

我正在使用UIGraphicsPushContext在drawRect中推送一个上下文,如下所示:

- (void)drawRect:(CGRect)rect {
  // Create Bitmap Graphics Context
  UIContextRef ctxt = //blah blah;
  // Push the custom context in the graphics stack
  UIGraphicsPushContext(ctxt);
  // Draw Stuff
  // Get Image from custom context
} 

我的问题是图像没有显示在屏幕上(在视图上),但我可以确认我已经成功绘制了上下文,因为从上下文中检索到的图像显示的图像类似于我想要绘制的图像。 / p>

我想要实现的是替换我对UIGraphicsGetCurrentContext()的调用(它可以工作并显示图像)并使用(推送)我可以使用的自定义上下文。

我在这里遗漏了什么吗?谢谢!

2 个答案:

答案 0 :(得分:0)

如果要绘制图像然后在视图中显示它,您必须在视图上绘制它,然后在图像上绘制,或者首先绘制到图像,然后在视图上绘制该图像。要实现第二个选项,请执行以下操作:

- (void)drawRect:(CGRect)rect {
    // Create image
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // Draw the image content using ctx

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // Draw image on view
    [image drawAtPoint:CGPointZero];
}

答案 1 :(得分:0)

我想你错过了这个:

- (void)drawRect:(CGRect)rect {
  // Create Bitmap Graphics Context
  UIContextRef ctxt = //blah blah;
  // Push the custom context in the graphics stack
  UIGraphicsPushContext(ctxt);
  // Draw Stuff
  // Get Image from custom context

  //blah blah

  UIGraphicsPopContext();
}

使用UIGraphicsPopContext()恢复上一个上下文