假设我有一个100x100的NSImage。我还有一个50x50的NSImageView。有没有办法将NSImage放在NSImageView内的坐标处,所以我可以控制它的哪一部分显示?看起来NSImage似乎没有initWithFrame方法...
答案 0 :(得分:3)
我在我的NSImageView子类中做了这个,就像Andrew建议的那样。
- (void)drawRect:(NSRect)rect
{
[super drawRect:rect];
NSRect cropRect = NSMakeRect(x, y, w, h);
[image drawAtPoint:NSZeroPoint
fromRect:cropRect
operation:NSCompositeCopy
fraction:1];
}
答案 1 :(得分:2)
我不相信,但是通过自己绘制图像来滚动你自己的NSImageView等效物来支持中心/拉伸选项是微不足道的。
答案 2 :(得分:1)
使您的imageview与图像一样大,并将其放在滚动视图中。如果需要,隐藏滚动条。在这种情况下不需要子类化。
答案 3 :(得分:1)
NSImageView有一个方法-setImageAlignment:
,可让您控制图像在图像视图中的对齐方式。不幸的是,如果您想要显示与任何NSImageAlignment
值不对应的图像部分,您将不得不以编程方式绘制图像。
答案 4 :(得分:0)
取决于您最终的目标是什么,但对我来说,最简单的事情似乎是将您的NSImageView
放在NSView
(或子类–不必NSScrollView
中,因为“ @NSResponder”用户建议,但这也应该工作良好),将其imageScaling
设置为NSImageScaleProportionallyUpOrDown
,并将其frameSize
设置为图像的size
。然后,您可以使用NSImageView
在上视图中自由移动setFrame:myDesiredFrame
。没有子类,没有手动重绘等。