iPhone的简单图形绘制任务

时间:2012-09-22 19:06:47

标签: iphone ios quartz-graphics

我需要绘制一个简单的图形,但我还没有自定义绘制iPhone图形的经验,所以我希望,有人可以帮助我。

任务很简单:我需要从资源中的.png文件中绘制图形背景,并从背景上某些位置的捆绑.png文件中绘制点。

对于绘图,我从UIView创建了后代,并使用以下代码行:

CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rect = CGRectMake(0, 0, 250, 500);
CGContextDrawImage(context, rect, [[UIImage imageNamed:@"graph.png"] CGImage]);

但它不起作用。

第一个问题,我无法解决 - UIGraphicsGetCurrentContext返回nil。

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可能忘记在xib / storyboard中添加View。

在故事板中打开实用程序菜单,并将“视图”添加到您要绘制的屏幕中。然后将View的类更改为扩展View的类。

您可以在“使用5星评级视图”部分中关注此tutorial,将您的视图添加到故事板中。

有关详细信息,您可以:

  • 在stackoverflow上关注此answer
  • 检查您是否在本教程中或在此blog之后为您的服务查看所需的所有步骤(此博客没有故事板部分)

答案 1 :(得分:0)

我用这段代码解决了我的问题。

- (void) drawGrid{
    UIImage *sourceImage = [UIImage imageNamed:@"sungraph.png"];

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(sourceImage.size.width, sourceImage.size.height), NO, 0);

    CGRect rectangle = CGRectMake(0, 0, sourceImage.size.width, sourceImage.size.height);
    self.frame = rectangle;

    [sourceImage drawInRect:rectangle];
}

- (void) finalizeImage{
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    imgView = [[UIImageView alloc] initWithImage:newImage];
    imgView.frame = CGRectMake(0, 0, newImage.size.width, newImage.size.height);
    [self addSubview:imgView];    
}

从我的类的 initWithFrame 我调用第一个函数。 之后,我将一些数据添加到图表中(绘制线条等) 并在最后调用 finalizeImage