Iphone sdk保存图纸没有完整的上下文

时间:2011-10-03 05:17:00

标签: ipad ios4 mkmapview mapkit core-location

我想从我的iPhone应用程序中捕获我的视图屏幕。我有白色背景视图,然后使用此方法在该视图的图层上绘制一条线。

- (void)draw {
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSaveGState(context);
    if (self.fillColor) {
        [self.fillColor setFill];
        [self.path fill];
    }
    if (self.strokeColor) {
        [self.strokeColor setStroke];
        [self.path stroke];
    }

    CGContextRestoreGState(context);
}



- (void)drawRect:(CGRect)rect {
    // Drawing code.
    for (<Drawable> d in drawables) {
        [d draw];
    }
    [delegate drawTemporary];
}

我使用委托方法在图层上绘制线条。 这是我得到帮助的项目链接。 https://github.com/search?q=dudel&type=Everything&repo=&langOverride=&start_value=1

现在,当我使用以下上下文方法保存绘图时,我成功保存了它而没有白色背景。

drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

但是当我使用Bezier Pathe的以下方法时,我无法在没有白色背景的情况下保存绘图,它会保存整个屏幕,即绘图及其背景。

UIGraphicsBeginImageContext(self.view.bounds.size);
    [dudelView.layer renderInContext:UIGraphicsGetCurrentContext()];
    //UIImage *finishedPic = UIGraphicsGetImageFromCurrentImageContext();

所以有人可以帮助我如何在此应用程序中仅保存绘图。

2 个答案:

答案 0 :(得分:0)

(您已将此标记为与MapKit相关,但未提及MapKit。)

为什么不将绘图序列分成三个块?

  1. 如您所述,将路径绘制到图像上下文中并获取UIImage。
  2. 绘制背景颜色。
  3. 绘制UIImage。
  4. 然后你也可以使用UIImage作为你的“截图”。

    我还应该注意,如果您在捕获的UIImage中不想要的事物是背景颜色,那么最好创建一个UIImageView,设置其背景颜色({{1} }),并将其图像设置为您的UIImage。

    UIImageView内部具有许多优化功能,使其能够以比自定义-setBackgroundColor:实现更高的性能显示图形。

答案 1 :(得分:0)

为什么不直接保存drawables数组?这些都是没有底层图像的图纸:)