Coreplot库 - 提取整个图形图像

时间:2012-02-22 09:24:34

标签: iphone graph core-plot

我正在使用此代码创建图形图像

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。

提前致谢...

2 个答案:

答案 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;
}//============================================================================