2

NSOpenGLView のズーム方法があります。画像を拡大すると、NSOpenGLView のフレーム サイズ、ビュー ポートなどが拡大されます。NSOpenGLView が縮小されている (フレーム サイズ、ビュー ポートなどが縮小されている) 場合も同じことが起こります。したがって、NSOpenGLViewがウィンドウよりも大きくなるように画像を拡大すると、スクロールバーが表示されるはずです。そこで、NSOpenGLView を NSScrollView に配置することが私の解決策になると考えました。しかし、そうではありません。うまくいきません。どうすればそれができますか?

4

1 に答える 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 {
};

しかし、それはハックであり、使用する場合は、Clip ビューのカスタム実現を行う方がよいでしょう。

OpenGL ビューをズームしたい場合は、フレーム サイズを変更するだけです。

于 2014-12-02T10:14:56.030 に答える