我正在使用以下代码从自由手绘图创建图像:
UIGraphicsBeginImageContext(self.bounds.size);
for (UIBezierPath *path in self.pathArray) {
[self.lineColor setStroke];
[path stroke];
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
我想拍摄的只是黑线(绘图)而不是整个视图的图像。查看大小为300x300。但如果我的绘图是50x50,那么我只想专注于那部分。
我试过
UIGraphicsBeginImageContext(signPath.bounds.size);
signPath
是UIBezierPath
个对象。但有了这个,我得到了空白的图像。
有什么建议吗?
答案 0 :(得分:2)
UIGraphicsBeginImageContext(signPath.bounds.size);
通过这种方式,我只创建了图像上下文的大小,并且缺少原点。
所以我需要用x and y (origins).
我来自UIBezierPath
size.
代码:
CGSize size = signPath.bounds.size;
size = CGSizeMake(size.width + 10, size.height + 10);
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextConcatCTM(c, CGAffineTransformMakeTranslation(-signPath.bounds.origin.x + 5, -signPath.bounds.origin.y + 5));
[self.layer renderInContext:c];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
我在创建图像时为某些填充(给定一些空间)给出了静态值。
不确定这是否是标准方式,但它解决了我的问题,我能够在500x500视图中创建手绘图像。
现在我得到的是我的自由手绘图(Strokes
)的图像,而不是整个视图。