我的 NSOpenGLView 有缩放方法。如果图像被放大,则 NSOpenGLView 帧大小、视口等正在增加。如果 NSOpenGLView 被缩小(帧大小、视口等正在减少),也会发生同样的事情。所以我需要,如果图像被放大,NSOpenGLView 比我的窗口大,滚动条应该出现。所以我认为将 NSOpenGLView 放到 NSScrollView 将是我的解决方案。但事实并非如此。它不起作用。那我怎么能做到呢?
问问题
531 次
1 回答
0
在 Interface Builder 中将 NSOpenGLView 放入 NSScrollView 时,必须重新定义自定义视图的方法:
- (void)awakeFromNib
- 这里是 OpenGL 和其他初始化。- (void)drawRect: (NSRect) dirtyRect
- 这里是渲染。- (void)setFrame:(NSRect)frame
- 这是对改变框架大小的反应。
作为视口使用 visibleRect 的大小:
glViewport(0,
0,
self.visibleRect.size.width,
self.visibleRect.size.height);
如果您的视图正在闪烁,请重新定义方法resizeWithOldSuperviewSize
:
- (void)resizeWithOldSuperviewSize:(NSSize)oldSize {
};
但它是hack,如果使用它,最好自定义实现剪辑视图。
如果要缩放 OpenGL 视图,只需更改其帧大小。
于 2014-12-02T10:14:56.030 回答