【问题标题】:How to overlay one CGImage over another如何将一个 CGImage 覆盖在另一个上
【发布时间】:2012-11-07 08:01:25
【问题描述】:

我希望将一个 CGImage 覆盖在另一个之上。

例如,第一个 CGImage 是 1024x768 并且想要在给定位置覆盖第二个 100x100 CGImage。

我已经看到如何使用 NSImage 来执行此操作,但我并不想将我的 CGImage 转换为 NSImage,然后进行叠加,然后将结果转换回 CGImage。我也看过 iOS 版本的代码,但不确定如何在 Mac 上进行?

【问题讨论】:

  • iOS 代码实际上应该可以在 OS X 上运行,因为两个平台上的 CoreGraphics API 是相同的。
  • @KevinBallard 不幸的是,我发现的 iOS 示例使用 drawRect 来渲染覆盖的图像。craftymind.com/2009/02/10/… 不确定我是否可以从第一张图像中获取上下文并以某种方式对其进行 CGContextDrawImage 处理?

标签: cocoa cgimage cgimageref


【解决方案1】:

我主要习惯于 iOS,所以我在这里可能超出了我的深度,但是假设您有一个图形上下文(大小与两个图像中较大的一个),您不能只在顶部绘制两个 CGImage彼此的?

CGImageRef img1024x768;
CGImageRef img100x100;

CGSize imgSize = CGSizeMake(CGImageGetWidth(img1024x768), CGImageGetHeight(img1024x768));

CGRect largeBounds = CGRectMake(0, 0, CGImageGetWidth(img1024x768), CGImageGetHeight(img1024x768));
CGContextDrawImage(ctx, largeBounds, img1024x768);

CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(img100x100), CGImageGetHeight(img100x100));
CGContextDrawImage(ctx, smallBounds, img100x100);

然后将结果绘制到一个 NSImage 中?

【讨论】:

  • 你是对的,这是解决这个问题的方法,但是我首先在获取上下文时遇到了问题。最后我重构了我的代码以使用 NSImage
猜你喜欢
  • 2011-02-25
  • 2011-12-14
  • 2011-10-06
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
相关资源
最近更新 更多