ここでのシナリオは次のとおりです。Frame オブジェクトを使用して、AWT (Swing なし) で低レベルのレンダリングを行っています。唯一の問題は、フレームに直接レンダリングする場合、フレームが境界を考慮しないことです。したがって、(0,0) で Rectangle をレンダリングすることは、正しいことをしているようには見えません。これは、(0,0) が Frame のリテラル左上であるためです。
したがって、問題は、次のようにすべてを画面上にレンダリングするためのフレーム インセットを追加する代わりに、次のようになることです。
//This is within the rendering method in the Frame subclass. A buffer strategy is already created
Graphics2D g = (Graphics2D)bufferStrategy.getDrawGraphics();
g.clearRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
Insets insets = this.getInsets();
g.drawString("FPS: " + getFPS(), 100 + insets.left, 100 + insets.top); //<-- Ugh.
g.dispose();
フレームの基礎となるグラフィックスにある種のオフセットを簡単に追加できるようにしたいと考えています。これは可能ですか?明確にするために、次のような機能があればいいでしょう。
g.setDrawingOrigin(x, y);
このような方法で、私は殺人を免れることができました。なぜどこかに埋葬されないのかわかりません...
注: JFrame ではなくフレームであるため、参照するコンテンツ ペインがありません。もう 1 つのことは、Frame に他のコンポーネントを追加しないようにすることです。私はこれを可能な限り軽量に保とうとしています (したがって、JFrame の代わりに Frame を使用します。大した違いはありませんが、楽しみましょう :D)。