如何创建自定义NSView的缩小版本

时间:2011-11-10 01:17:30

标签: cocoa custom-controls nsview

我构建了一个自定义视图组件,用于显示事件的时间轴。该组件由NSView的几个自定义子类构建,每个子类实现时间轴中事件的特定视觉方面。大多数类通过现有Cocoa组件(通过initWithFrame方法添加)和一些自定义绘图(通过drawRect方法)的组合来显示自己。

时间轴 - 由于其大小 - 包装在NSScrollView中,允许用户水平滚动时间轴。时间轴将其框架的坐标系映射到显示的事件,因此长时间运行的事件会占用更多的像素空间。

这一切都很好。但是,我现在想添加一个显示视图的功能,该视图是实时时间线的缩小版本 - 与缩小图像缩小比例时丢失细节的效果相当。

是否有可能将在一个视图中完成的绘图“回显”到另一个视图,这是原始视图的缩小版本/副本?

1 个答案:

答案 0 :(得分:2)

如果你想回应更大的时间轴并简单地调整它的大小......

NSView有:

- (NSData *)dataWithPDFInsideRect:(NSRect)aRect

将较大视图的NSRect传递给快照。

然后,使用:

创建一个NSImage
- (id)initWithData:(NSData *)data

然后调用setSize并将其放在NSImageView中。