2

私は次の40分で大学でコンサートを開き、いくつかの異なる画面で作成したフルスクリーンアプリケーションを投影しています。今夜はプロジェクションシステムを手に入れることができましたが、プラグを差し込むと画面の解像度が大幅に変化しますが、プログラムを実行すると、古い画面解像度を使用しているかのように動作します。ビジュアルディスプレイ全体を正確なピクセル値にコーディングしましたが、画面の側面から押し出されたため、半分が表示されません。システム環境設定で手動で表示を変更しようとしましたが、効果がありません。解像度に合わせてさまざまな表示モードを作成しようとしましたが、UnsupportedOperationException:表示モードを変更できませんというメッセージが表示され続けます。

以下は、フルスクリーンを初期化するために使用するコードです。

            frame = new display();
            canvas = new Canvas();
            canvas.addKeyListener(this);
            frame.setUndecorated(true);
            frame.getContentPane().add(canvas);
            strategy = canvas.getBufferStrategy();
            environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
            device = environment.getDefaultScreenDevice();
            oldDisplay = device.getDisplayMode();
try {
            device.setFullScreenWindow(frame);
            newDisplay = new DisplayMode(1440, 900, 60, 60);
            device.setDisplayMode(newDisplay);
catch (Exception ex) { }
            canvas.requestFocus();
            canvas.setFocusTraversalKeysEnabled(false);
            frame.setVisible(true);
            canvas.createBufferStrategy(2);
            strategy = canvas.getBufferStrategy();

ディスプレイは、JFrameを直接拡張したものです。

これが機能しない場合は、私の学位のこのモジュールに失敗します。今私を失敗させないでください!ありがとうございました!

編集:修正された例外しかし、プログラムは、800、600、60、60を設定しているにもかかわらず、解像度をまったく変更していないようです。

4

2 に答える 2

2

私の解決策は、OPが考えているものではありません。しかし、私はそれがあなたの問題を解決すると信じています。

VirtualBox (またはスケール モードをサポートするその他の VM) を取得します。そこに 20 分かけてオペレーティング システムをインストールし、その中でプログラムを実行します。多くの VM はスケール モードをサポートしています。つまり、ゲスト OS は解像度 X 1 *Y 1を実行していると認識しますが、実際には画面上では X 2 *Y 2として表示され、VM によってスケーリングされます。したがって、どの解像度でもプログラムを適切に表示できます。

于 2012-10-26T19:34:12.497 に答える
0

ほとんどのプロジェクターがサポートする (1024、768、60、60) まで DisplayMode を下げることができます。最悪の場合、800、600、60、60 に落としてください。しかし、DisplayMode の範囲外のハードコードされたピクセル値でキャンバスに描画されたものは、画面に表示されなくなります。

于 2012-10-26T19:21:46.950 に答える