我正在使用此代码创建图形图像
UIImage *newImage=[graph imageOfLayer]
NSData *newPNG= UIImageJPEGRepresentation(newImage, 1.0);
NSString *filePath=[NSString stringWithFormat:@"%@/graph.jpg", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];
if([newPNG writeToFile:filePath atomically:YES])
NSLog(@"Created new file successfully");
但是我只获得图像中的可见区域(320 * 460),如何获得带有轴的整个图形图像。 请提供一些代码片段,我该如何使用coreplot。
提前致谢...
答案 0 :(得分:4)
将新图形设为所需输出图像的大小。它不必添加到托管视图中 - 仅在屏幕上显示它时才需要。
CPTXYGraph *graph = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:desiredFrame];
// set up the graph as usual
UIImage *newImage=[graph imageOfLayer];
// process output image
答案 1 :(得分:0)
我解决这个问题的方法是创建一个提取图像的方法。
在那个方法中,我暂时使托管视图,滚动视图,图形边界和绘图区域框架边界瞬间变大。然后我将图形转换为图像。
然后我从其容器中删除托管视图以将其从屏幕中删除。然后我调用doPlot方法通过DoPlot方法重新初始化绘图及其数据。我的代码如下。
执行此操作时可能会出现视觉抖动。但是,您可以通过使用警报输入要导出的电子邮件,或只是一个简单的警报说明图像导出来伪装。
//=============================================================================
/**
Gets the image of the chart to export via email.
*/
//=============================================================================
-(UIImage *) getImage
{
//Temprorarilty make plot bigger.
// CGRect rect = self.hostingView.bounds;
CGRect rect = self.scroller.bounds;
rect.size.height = rect.size.height -100;
rect.origin.x = 0;
rect.size.width = rect.size.width + [fields count] * 100.0;
[self.hostingView setBounds:rect];
[scroller setContentSize: hostingView.frame.size];
graph.plotAreaFrame.bounds = rect;
graph.bounds = rect;
UIImage * image =[graph imageOfLayer];//get image of plot.
//Redraw the plot back at its normal size;
[self.hostingView removeFromSuperview];
self.hostingView = nil;
[self doPlot];
return image;
}//============================================================================