2013-01-04 105 views
1

我使用CIContext方法- (void)drawImage:(CIImage *)im inRect:(CGRect)dest fromRect:(CGRect)src将我的图像绘制到屏幕上。但我需要实现放大/缩小方法。我怎么能实现它?我想放大可以实现增加dest矩形,因为苹果的文档说:CIContext drawImage:inRect:fromRect:scaling

The image is scaled to fill the destination rectangle. 

但怎么样缩小?因为如果dest矩形按比例缩小,则图像将以实际大小绘制,但只有图像的一部分可见(然后适用于dest矩形的部分)。

你能提出什么建议?

+0

您是否真的尝试过并观察该行为,或者您只是在猜测可能发生的事情? –

+0

我已经试过了 – hockeyman

回答

0

您可以尝试使用this进行图像大小调整(缩放)。希望这可以帮助你。

0

在绘制之前,您可以使用CIFilter调整CIImage的大小。 Quartz Composer附带了一个使用这个过滤器的好例子。只需在QC中查看Image Resize过滤器的描述即可。

编辑: 另一个好的缩放过滤器是CILanczosScaleTransform。有一个演示基本用法的snippet

0

在这个小toy app I made

这是证明你CIContext方法的NSImage中版本看看:

- (void)drawInRect:(NSRect)dstRect 
      fromRect:(NSRect)srcRect 
     operation:(NSCompositingOperation)op 
      fraction:(CGFloat)delta 

我这样做是为了找出rects究竟是如何相互关联的。它是互动的,你可以使用滑块来移动/缩放图像。不是一个解决方案,但它可以帮助你解决问题。