NSScrollView中的NSOpenGLView?

时间:2012-08-23 05:54:28

标签: objective-c opengl scroll nsscrollview nsopenglview

我的NSOpenGLView有缩放方法。如果图像放大,则NSOpenGLView框架大小,视图端口等正在增加。如果NSOpenGLView被缩小(帧大小,视口等等正在减少),也会发生同样的事情。所以我需要,如果图像被放大,以便NSOpenGLView比我的窗口大,滚动条应该出现。所以我认为将NSOpenGLView放到NSScrollView将是我的解决方案。但事实并非如此。它不起作用。我怎么能这样做?

1 个答案:

答案 0 :(得分: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 {
};

但它是黑客攻击,如果使用它,最好自定义实现Clip视图。

如果要缩放OpenGL视图,只需更改其帧大小。