我目前遇到CGImageRef
的问题。
每当我创建CGImageRef
并在调试器视图中查看它时,在Xcode中,它是nil
。
以下是代码:
-(void)mouseMoved:(NSEvent *)theEvent{
if (self.shoulddrag) {
NSPoint event_location = [theEvent locationInWindow];//direct from the docs
NSPoint local_point = [self convertPoint:event_location fromView:nil];//direct from the docs
CGImageRef theImage = (__bridge CGImageRef)(self.image);
CGImageRef theClippedImage = CGImageCreateWithImageInRect(theImage, CGRectMake(local_point.x,local_point.y,1,1));
NSImage * image = [[NSImage alloc] initWithCGImage:theClippedImage size:NSZeroSize];
self.pixleView.image = image;
CGImageRelease(theClippedImage);
}
}
其他一切似乎都在起作用。我无法理解。任何帮助将不胜感激。
注意:self.pixelView
是一个NSImageView
实例,未以任何方式覆盖。
答案 0 :(得分:0)
很可能local_point
不在图像内部。您已将点从窗口转换为视图坐标,但这可能与图像坐标不同。测试一下,看看图片的左下角是否会local_point
为(0,0)
。
目前还不清楚你的观点是如何布局的,但我怀疑你想要做的是减去用户与self
相互作用的任何区域(可能是子视图)的来源。
答案 1 :(得分:0)
我用来创建CGImageRef
的是:
CGImageRef theImage = (__bridge CGImageRef)(self.image);
显然我应该使用的是:
CGImageSourceRef theImage = CGImageSourceCreateWithData((CFDataRef)[self.image TIFFRepresentation], NULL);
我想我的问题是因为某种原因我认为NSImage
和CGImageRef
有免费的桥接。
显然,我错了。