問題タブ [java-2d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
13819 参照

java - Java2D で複数の円を描く

Java2D を使用して単純なグラフィックス プログラミングを実行しようとしています。JFrameにいくつかの円を表示しようとするだけで、簡単に始めました。1 つの円を表示することに成功しましたが、2 つ目の円を追加すると、JFrame に最後に追加された円のみが表示されます。クラス Circle を使用して円を定義し、表示に使用する paintComponent メソッドをオーバーライドします。私が間違っているかもしれないことについての提案は大歓迎です。私のクラス Circle と DancingCircles のコードは、参考のために以下に提供されています。

ありがとう!

ポール

0 投票する
2 に答える
10912 参照

java - Javaで長方形の境界線を生成する際の問題?

java.awt.geom.Rectangle2D.Doubleクラスを使用して長方形を生成しています。色(緑など)で塗りつぶされ、境界線(アウトライン)を持つ長方形を生成したいと考えています。

今問題は私が電話するかどうかです

それは長方形を埋めず、私が呼び出すとき

id は境界線を生成しません。

0 投票する
5 に答える
68525 参照

java - Javaで有向矢印線を描く方法は?

Javaで有向矢印線を描きたいです。

現在、java.awt.Line2D.Doubleクラスを使用して線を引いています

しかし、線だけが表示され、有向矢印は表示されません。 BasicStroke.Join_BEVEL有向矢印を描くために使用されます。2 つの線分が交わったときに適用されます。

描いている線が四角形の境界線を満たしていますが、有向矢印が描かれていません。シンプルな線だけが描かれています。

不足しているものはありますか?

0 投票する
4 に答える
1267 参照

java - Java 2D グラフィックス: イメージをオーバーレイできません

私はJava 2Dグラフィックスを理解しようとしています

私は基本的に、次のように背景画像を含む JPanel を取得しました。

ペイント コンポーネントでは、いくつかの xml から取得したさまざまな xy ポイントでループ内の 12x12 ピクセルの小さな画像をオーバーレイしたいと考えています。

最初の画像にオーバーレイする画像を取得できないようです

私はここで少し迷っていて、錆びています

どんな助けでもgr8になります

0 投票する
2 に答える
2514 参照

java - Java 2D で複合形状を作成する

Java 2D を使用して、いくつかのベジエ曲線 ( CubicCurve2D) をつなぎ合わせて「ブロブ」を作成しました。私が今直面している問題は、次の方法です。

  1. ブロブを特定の色で効率的に塗りつぶします。
  2. 特定の点がブロブ内にあるかどうかを効率的に判断します。

「内部性」を決定するための多数の方法を提供し、ビアを埋めることができるCubicCurve2D実装に気付きました(これはのメソッドを使用してこれを行うと信じています)。 ShapecontainsGraphics2DShapefill(Shape)ShapegetPathIterator

Shapeこれを考えると、私は自分のメソッドが基になるsgetPathIterator(AffineTransform)を単純にリンクするコンポジットを作成できることを望んでいました。PathIteratorただし、これは、NoSuchElementException私の形状に複数の が含まれていると生成されますCubicCurve2D。これを達成できたとしても、 aCubicCurve2Dは常に凸面で満たされ、「ブロブ」は凹面と凸面の曲線で構成されているため、期待どおりに機能するとは確信していません。「含む」問題は、ポイントがブロブ内に正当に存在する可能性がありますが、個々の曲線内には存在しない可能性があるため、さらに困難です。

  • 私はこの問題に正しい方法で取り組んでいますか (実装しようとしていますShapeか?)、または私が知らない慣用的な方法はありますか? 幾何学的形状を合成する問題はかなり一般的だと思っていたでしょう。
  • この問題を解決する方法について何か提案はありますか?

前もって感謝します。

0 投票する
1 に答える
5672 参照

image - Java-Graphics.drawImage()を使用して多くの画像を描画し、2画面のバッファ戦略により画像を歪めたり切り取ったりします

ループを使用して、ダブルバッファリングペインティングを呼び出しています。これは、私の唯一のPanelの再描画メソッドをオーバーライドするとともに、再描画の完全な制御をループに渡し、必要な場合にのみレンダリングするように設計されています(つまり、GUIで何らかの変更が行われました)。

これは私のレンダリングルーチンです:

ご覧のとおり、これはかなり標準的なものです。バッファストラテジー(2に初期化)からgrpahicsオブジェクトを取得し、それをすべて黒にして、「window」オブジェクトのpaintメソッドに渡します。

グラフィックオブジェクトを使用してウィンドウが完成したら、それを破棄し、バッファ戦略でshowを呼び出して、仮想バッファの内容を表示します。

ウィンドウがグラフィックスオブジェクトを他の多くの子コンポーネントに渡し、ウィンドウにデータを入力し、各コンポーネントがグラフィックスオブジェクトの同じインスタンスを使用して、テキスト、図形、画像などを画面に描画することに注意してください。

システムが実行され、大きな画像がレンダリングされると、問題が発生し始めます。画像はいくつかの断片にカットされ、画像がレンダリングされるはずの場所の内側に異なるオフセットで何度も(3〜4回)描画されているように見えます。私の添付画像を参照してください:

これは元の画像です: 代替テキストhttp://img109.imageshack.us/img109/8308/controller.png

これは私が得るものです: 代替テキストhttp://img258.imageshack.us/img258/3248/probv.png

2番目の画像では、画像上に図形をレンダリングしていることに注意してください。これらは常に正しい位置にあります。

なぜこれが起こっているのか考えていますか?g.drawImage(...)を呼び出す直前に、画像をメモリ内にあるようにファイルに保存すると、元の画像と同じになります。

0 投票する
2 に答える
1857 参照

java - Java 2D シェーディング / 塗りつぶし

ベジエ曲線 (下のスクリーンショット) から "blob" を作成しましたが、疑似 3D に見えるように陰影を付けたいと思います。そしておそらく、表面自体に真っ白な「光点」があります。例:このビデオで使用されているシェーディングを実現する方法に興味があります。

  • これを達成するための良い方法を誰かが推奨できますか? 標準の Graphics2D.fill および setPaint メソッドは十分に洗練されていない可能性があると推測しています。
  • また、これについてさらに学習するための優れたリソース (できれば無料/オンライン) を推奨できる人はいますか?

編集

いくつかの追加情報: 以下のフラットな塗りつぶし効果を実現するために、オブジェクトを作成しArea、個々Ellipse2D Shapeの を使用してオブジェクトに追加add(new Area(ellipse))し、最後に中央のポリゴン領域を追加して、中央に空白が残らないようにします。

代替テキスト http://www.freeimagehosting.net/uploads/bc8081cbf2.png

0 投票する
5 に答える
2800 参照

java - 閉じたベジエ曲線での自己交差の検出

3 次ベジエ曲線をつなぎ合わせて「ブロブ」形状を作成しました (下のスクリーンショット)。曲線がそれ自体または別の曲線を越えた状況を検出できるようにしたいのですが、これを行うための推奨されるアプローチまたは既知のアルゴリズムがあるかどうか疑問に思っていましたか?

私が持っていたアイデアの 1 つは、 a を使用しFlatteningPathIteratorて形状を直線セグメントに分解し、特定のセグメントが別のセグメントと交差するかどうかを検出することでしたが、より良いアプローチがあるかどうかに興味があります (これは 2 次パフォーマンスになるため)。この方法を追求する場合、2 つの線分が重なっているかどうかを検出する Java のライブラリ関数はありますか?

ありがとう。

クロスオーバーなし

クロスオーバーなし http://www.freeimagehosting.net/uploads/7ad585414d.png

クロスオーバー

クロスオーバー http://www.freeimagehosting.net/uploads/823748f8bb.png

0 投票する
6 に答える
4408 参照

java - OO方式のゲームデザイン

私は、Java2Dとニュートン物理学を使用する単純なゲームを設計しています。現在、私のメインの「ゲームループ」は次のようになっています。

エンティティがそれ自体を更新するように指示されると、エンティティに適用されている現在の力に基づいて速度と位置を調整します。ただし、他の動作を示すエンティティが必要です。たとえば、「悪者」がプレイヤーに撃たれた場合、エンティティは破壊され、ゲームの世界から削除されます。

私の質問:オブジェクト指向の方法でこれを達成するための最良の方法は何ですか?これまでに見たすべての例では、ゲームループをのような神のクラスに組み込んでいます。このクラスは、衝突の検出、悪者の殺害の確認、プレーヤーの殺害の確認、塗り直しなどGameの手順を実行します。すべてのゲーム状態(残りのライブなど)をカプセル化します。言い換えれば、それは非常に手続き的であり、すべてのロジックはGameクラスにあります。誰かがより良いアプローチをお勧めできますか?

これまで私が考えたオプションは次のとおりです。

  • GameContextエンティティが必要に応じて自分自身を削除したり、ゲームの状態を更新したりできる各エンティティにaを渡します(たとえば、プレーヤーが殺された場合は「実行されていません」)。
  • GameEntityそれぞれを中央クラスのリスナーとして登録しGame、イベント指向のアプローチを取ります。たとえば、衝突は、衝突CollisionEventの2人の参加者に解雇される結果になります。
0 投票する
2 に答える
1401 参照

java - Java スイングの小さな 2D ゲーム: ビューをモデル化する方法は?

小さな Java スイング 2D ゲームで、ボード ビューを作成するための最適なソリューションは何ですか?

  1. ボードのコンポーネントを使用して、それとチェッカーの各正方形を一度にカスタム ペイントしますか?
  2. ボード用のコンポーネントを使用し、正方形のみを処理する独自のペイント コンポーネントで正方形をモデル化する別のコンポーネントを作成します。レイアウトを使用して各 Square インスタンスをボードに配置しますか?

私はこれが主観的なものであることを知っており、それについて争いたくありません. 自分がどの道を行くべきかを理解するための手がかりが必要なだけです。私はサイドプロジェクトを開始し、何かがおかしいと感じて 1) を使用しました。