代码之家  ›  专栏  ›  技术社区  ›  hockeyman

NSScrollView中的NSOpenGLView?

  •  2
  • hockeyman  · 技术社区  · 12 年前

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   George    10 年前

    当您在Interface Builder中将NSOpenGLView放置到NSCrollView中时,您必须重新定义自定义视图的方法:

    • - (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 {
    };
    

    但这是黑客行为,如果使用的话,最好自定义实现剪辑视图。

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

    推荐文章