我想从我的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();
所以有人可以帮助我如何在此应用程序中仅保存绘图。
答案 0 :(得分:0)
(您已将此标记为与MapKit相关,但未提及MapKit。)
为什么不将绘图序列分成三个块?
然后你也可以使用UIImage作为你的“截图”。
我还应该注意,如果您在捕获的UIImage中不想要的仅事物是背景颜色,那么最好创建一个UIImageView,设置其背景颜色({{1} }),并将其图像设置为您的UIImage。
UIImageView内部具有许多优化功能,使其能够以比自定义-setBackgroundColor:
实现更高的性能显示图形。
答案 1 :(得分:0)
为什么不直接保存drawables数组?这些都是没有底层图像的图纸:)