我真的需要使用UIImage来模仿NSImage的drawInRect:fromRect:operation:fraction的行为,我想知道什么是最好的方法,或者(更好),如果有人已经这样做并愿意共享代码。
我尝试使用CGImageCreateWithImageInRect进行此操作(请参阅最后的代码),但没有得到预期的结果。请注意,代码实际上是在Mac上测试的(到目前为止,我无法在iPhone上运行整个程序),因此从NSImage获取CGImage可能会有一些问题
- (void)drawInRect:(CGRect)rect fromRect:(CGRect)fromRect alpha:(float)alpha {
CGContextRef context;
CGImageRef originalImageRef;
CGImageRef subimageRef;
#if ERMac
context=[[NSGraphicsContext currentContext] graphicsPort];
CGImageSourceRef source;
source = CGImageSourceCreateWithData((CFDataRef)[self TIFFRepresentation], NULL);
originalImageRef = CGImageSourceCreateImageAtIndex(source, 0, NULL);
CFRelease(source);
#else
context=UIGraphicsGetCurrentContext();
originalImageRef=CGImageRetain([self CGImage]);
#endif
subimageRef = CGImageCreateWithImageInRect (originalImageRef, fromRect);
CGContextDrawImage(context, rect, subimageRef);
if (subimageRef)
CGImageRelease(subimageRef);
if (originalImageRef)
CGImageRelease(originalImageRef);
}
这是我的方法...
UIImage具有drawInRect:blendMode:alpha:。提取UIImage的子矩形的一个简单技巧是将对象绘制到目标上下文中,该上下文是要提取的矩形的大小,将绘制图像的原点向上和向左调整,以使右侧部分落入目标上下文。
NSImage类别方法示例以及我的iOS移植端口: