【问题标题】:Draw on a UIImage在 UIImage 上绘制
【发布时间】:2026-02-13 15:40:01
【问题描述】:

我正在尝试创建 UIImage 并将其保存到照片库,图像已创建,但它只是一个平面白色,没有任何颜色。有什么想法吗?

UIGraphicsBeginImageContext(CGSizeMake(320,420));
CGContextRef ctx = UIGraphicsGetCurrentContext();

UIImage *image = [[UIImage alloc] init];

[image drawInRect:CGRectMake(0, 0, 100, 100)];

UIImage *newImage;    
newImage = UIGraphicsGetImageFromCurrentImageContext();

UIImageWriteToSavedPhotosAlbum(newImage, self, @selector(image:didFinishSavingWithError:ctx:), nil);

也只是添加到上面。我添加了这一行:

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

现在我得到一个灰色图像,仍然没有矩形,但它有所不同,所以认为它可能会有所帮助

【问题讨论】:

  • 您知道,第 3-5 行什么都不做。您正在填充一条空路径。
  • 那是我调试的一部分——我试图展示一些东西,从那时起它就被删除了。那么知道为什么它不起作用吗?

标签: iphone macos uiimage core-graphics


【解决方案1】:

您要显示什么 UIImage?,此代码仅初始化了一个内存空间,但它没有填充任何内容,请使用 [UIImage imageNamed:@"..."];其中字符串是项目资源的一些文件。然后,一旦您在上下文中打开并绘制了图像,您就可以在其上绘制一个字符串或其他任何内容。

同时确保从上下文中获取图像后关闭上下文。

【讨论】:

  • 我正在尝试创建一个新图像并对其进行绘制,而不是尝试在现有图像上进行绘制。我以为 [image drawInRect:CGRectMake(0, 0, 100, 100)];在指定坐标处绘制一个矩形?
  • 您正在创建一个其中没有任何内容的 UIImage。如果您使用 CGRectMake 创建一个矩形,然后对其进行着色等,您可以使用以下代码:CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(上下文, 15.0); CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); CGRect 矩形 = CGRectMake(60,300,650,400); CGContextAddRect(上下文,矩形); CGContextStrokePath(上下文);