1

私はある種の描画プログラムであるアプリケーションを作成しています。そのために、シェルで GLCanvas ウィジェットで SWT を使用しようとしています。これは、私が抱えている問題を示すスニペットです。

    shell = new Shell();

    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;

    shell.setLayout(gridLayout);
    shell.setSize(1000, 800);
    shell.setText(APPLICATION_NAME);

    Label label = new Label(shell, SWT.NONE);
    label.setText("Test");

    Composite composite = new Composite(shell, SWT.NONE);
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    composite.setLayoutData(gridData);
    composite.setLayout(new FillLayout(SWT.HORIZONTAL));

    GLData data = new GLData();
    data.doubleBuffer = true;

    canvas = new GLCanvas(composite, SWT.NO_BACKGROUND, data);

このコードからウィンドウのサイズを変更すると、正しく表示されません。GLCanvas がちらつきますが、残りの空白を適切に埋めるためにサイズ変更される前に、GLCanvas を画面に描画するステップが描画にあるかのようにも見えます。これには、たとえば、ウィンドウが左にサイズ変更されている間に、GLCanvas が本来よりも小さいという影響があります。逆に、ウィンドウが右にサイズ変更されている間、GLCanvas は必要以上に大きくなり、ウィンドウの右にはみ出します。

キャンバスのスタイルを SWT.NONE から SWT.NO_BACKGROUND から SWT.DOUBLE_BUFFERED から SWT.NO_REDRAW_RESIZE に設定しようとしましたが、この問題には影響しませんでした。

この動作を修正するにはどうすればよいですか?

4

0 に答える 0