問題タブ [graphics2d]
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.
java - JavaクラスとメソッドをAndroidに移植します。(TextLayout、Font、Graphics2Dなど)
私はAndroidをいじって、Javaアプリを移植しようとしています。以下は、私が遭遇した問題に関するいくつかの質問であり、いくつかのガイダンスが必要です。
それはかなり大きな質問です(むしろ複数の質問)。しかし、私は彼らについて何ができるかを研究し、私の理解を生かそうとしたので、盲目的に彼らに尋ねているわけではありません。私は、私が達成したいことについて中途半端に明確になることを期待して、質問をすることに時間を費やしました。
徹底的な回答と支援を期待しているので、担当者の半分を報奨金として提供します。数人の人々を支援するのに十分であることを願っています。
よろしくお願いします!(回答を読むのを楽しみにしています)。
TextLayout && Font && Graphics2D
問題となっているのは、次のクラスとメソッドです。
TextLayout
TextLayout.getAdvance()
TextLayout.getAscent()
TextLayout.draw()
Graphics2D.getFontRenderContext()
TextLayout
Androidで何が同等かはよくわかりません。TextView
一部の人がそれを作って使うことを読んだことがありますが、それがうまくいくかどうかはわかりません
次のように働きます。私がやりたいことのいくつかの情報源を提供します、そしておそらく1つは私を助けることができます。
Javaソース:
Androidレプリケーションの試み:
TextLayoutを作成する方法と、メソッドに対して何をするかを決定することに固執していますgetAdvance()
。Paint.FontMetrics()
そこにあることに気づきました
いくつかの可能な選択肢がありますが、比較できるかどうかはわかりません。
また、次のJavaコードの処理方法もわかりません。
上記の質問のレビュー/要約:
- Androidの代替手段は何
TextLayout
ですか? - 何に相当し
TextLayout.getAdvance()
ますか?(私はfontMetrics
それを達成するために使用できますか?) - Androidに相当するものはあり
Graphics2D.getFontRenderContext()
ますか? - Androidのサンプルソースを提供できますか?
これは現在、JavaをAndroidに移植する際の私の最大の問題の1つです。私はどんな助け、アドバイス、例などのために素晴らしいでしょう。
フォント
font
以下は、、、、textlayout
およびを処理する複製したいメソッドですgraphics2d
。最初のソースはJavaメソッドと
その下にそれを複製する私の試みがあります。
問題となっているのは、次のクラスとメソッドです。
Font.deriveFont(float size)
現在のフォントオブジェクトを複製し、それに新しいスタイルを適用することにより、新しいフォントオブジェクトを作成しますTextLayout.getAdvance()
前進は、原点から線方向で測定した右端(最下部)の文字の前進までの距離です。Graphics2D.setRenderingHint(RenderingHints, RenderingHints)
Graphics2D.getFontRenderContext()
アンチエイリアシングやフラクショナルメトリックなどのアプリケーションヒントをカプセル化します
Javaソース:
Androidの試み:
上記の方法に関する最後の質問:
- どのような選択肢があり
TextLayout.getAdvance()
ますか?(TextLayoutに関する質問のために回答されているかどうかは無視してください) - どのような選択肢があり
Graphics2D.getFontRenderContext()
ますか? - 私のAndroidソースはJavaソースを複製しますか?そうでない場合は、何を変更する必要がありますか?
- これを行うためのより良い方法はありますか?もしそうなら、どのように?
Elipse2D.Double(double x、double y、double w、double h)
楕円形のサブクラスを作成して、Java Ellipse2D.Doubleと同等のものを作成する方法はありますか?もしそうなら、どのようにそれについて行くでしょうか?
ComponentAdapter && ComponentEvent
コンポーネントのサイズを変更できるため、Javaでこれらを使用していますが、Androidでは、ビューのこれらに相当するものは何ですか?(もしあれば)
java - Java でピクセル画像をペイントする
Javaでピクセル画像を作成する最良の方法はどれですか. たとえば、サイズが 200x200 で合計 40.000 ピクセルのピクセル画像を作成したいとします。ランダムな色からピクセルを作成し、JFrame の特定の位置にレンダリングするにはどうすればよいですか。
ピクセルを作成するだけの独自のコンポーネントを作成しようとしましたが、そのようなピクセルを for ループで 250.000 回作成し、各インスタンスを JPanels レイアウトに追加すると、パフォーマンスが低下するようです。
java - 2Dスクロールマップにはどのバッファリング戦略を使用する必要がありますか?
だから、私はJavaで2Dトップダウンゲームを作成しています。
私はJava2Dの指示に従っています:ハードウェアアクセラレーション-パート2-ハードウェアアクセラレーションを利用するためのバッファ戦略。
基本的に、私が考えているのはこれです
。マップにセクションを簡単に追加できるようにしたいと思います。したがって、私が見たいくつかのチュートリアルで提案されたルートには行きたくありません(各マップタイルには、周囲のタイルの隣接リストがあります。中央のタイルから始めて、幅優先探索を画面に表示します)。
代わりに、画面サイズのタイルのコレクション(簡単にするために32x32など)を作成し、これらの画面の「チャンク」のそれぞれに、隣接する各コレクションを参照するリストを作成することをお勧めします。次に、現在の画面と隣接する8つの画面用のバッファーを作成し、VRAMバッファーに表示部分を描画します。
私の質問は、これはこれを行うための正しい方法ですか、それともより良いオプションがありますか?私はかなりの数のチュートリアルを調べましたが、それらはすべて同じ(一見高いメンテナンス)オプションを提供しているようです。
タイルレベルで処理を行うには、隣接リストの1024倍が必要になるため、これがより適切な選択であるように思われます。また、「現在の」画面とその隣接画面を標準バッファに残したまま、表示部分のみをVRAMに配置することを検討した理由は、ハードウェアアクセラレーションに慣れておらず、想定できるスペースの量が完全にわからないためです。利用可能になります。Javaはとにかく標準バッファを高速化しようとするので、理論的にはそれぞれをVRAMに入れるのと同じくらい速いはずですか?
ありとあらゆる提案を歓迎します!
java - 画像のJavaリサイズ中心
先日、何か他のものを調べていて、画像のサイズを変更する方法に出くわしたことを覚えているように感じますが、画像の長さに関係なく、画像の丸みを帯びたエッジが常に同じように見えるように、画像の側面に沿った領域を変更しないでくださいスケーリングされた画像の。もう少しグーグルで調べた後、私が見たのを覚えているものが見つからないので、これが可能かどうか、そして誰かが情報を持っているかどうかを知りたい.
特に私が持っているのは、ラベルが付いた吊り下げタブのように見えるカスタム ボーダーです。画像は上が正方形で、下の端が丸くなっています。ラベルの長さに関係なく、底の角を丸く保ちたいのですが、大きなラベルに対応するために中央を最大 90% 伸ばします。このコードのどこかにインセットを入力できると思いますか? リサイズ方法で。
swing - フレームサイズに一致するように図面のサイズを変更します
固定ピクセル位置に基づいてpaint()内のすべてをカスタム描画するアプリを作成しました。次に、フレームのサイズ変更を無効にして、常に表示されるようにしました。
ただし、サイズを変更できるようにしたいのですが、描画コードを変更したくありません。Graphics gオブジェクトの300x300の正方形を取得し、すべての描画コードの後でJFrameの現在のサイズにサイズ変更できることを望んでいましたが、何をしているのかわかりません。
ここにサンプルコードがあります。これでは、サイズ変更されたJFrameに比例して、100x100の正方形を中央に残しておきます。
ありがとう。
java - Graphics2D コンテキストで Path2D オブジェクトの Rectangle をアニメーション化する方法
Graphics2D クラスの基本を学び始めたところです。これまでのところ、さまざまなオブジェクトを描画して実装ActionListener
し、実際に画面上で移動することができますonKeyPress
。これまでのところ、私はもっと複雑なことを考えていました。オブジェクトへのパスを指定し、その特定のパスでのみアニメーション化したいと考えています。
空に線を引くと、飛行機はその線にくっついて、その特定の線に沿って飛行する必要があります。今それは可能ですか?
なんらかのコードは必要ありませんが、いくつかの異なる方法やアイデアで、これに取り掛かることができます。私のアイデアの視覚化の詳細は次のとおりです。
出発地点 :
終点 :
上記のように、私の黄色いボックス(将来の平面)は、アニメーション化中に指定されたパスに固執する必要があります(パスの灰色の線)
これまでの私の研究は、
javaのパスなどの流行語を検索し、クラスを見つけましPath2D
たGeneralPath
。これを使用してこれを解決できるかどうかは誰にもわかりません。
ありがとう
java - 複数の画面上のVolatileImageJFrame
このチュートリアルを使用してVolatileImageを描画するためにGraphics2Dを使用しているJFrameがあります。私は主にコードをコピーしてどのように機能するかを確認しましたが、ゲーム用に少し編集しました。2つの画面でコンピューターを実行しています。
ゲームのウィンドウを、ウィンドウが元々表示されていなかった別の画面にドラッグすると、問題が発生します。Graphics2Dで描いた単純な長方形でさえ、ウィンドウが灰色になり、グラフィックが画面に表示されません。これは、チュートリアルに示されているように、volatileimageのdrawメソッドを呼び出した場合にのみ発生します。
これと関係があるのではないかと思います...
...しかし、私にはわかりません。
どんな助けでも大歓迎です。VolatileImageが私のゲームに行くべき方法であるかどうか、またはBufferedImageまたは他の何かがパフォーマンスとフレームレートのより良い方法であるかどうかを知ることも興味深いでしょう。
java - 座標変換ジレンマ、ユーザー座標からデバイス座標へ?
「ミリメートル」単位の道路の「長さ」などのデータを含むタスクに取り組んでいます。そして、仕様によると、私の JFrame は 4 メートル * 3 メートルでなければなりません (これをデバイス座標に変換する方法は...?)。
これで、少なくともこのデータは実世界のデータであり、デバイスのピクセル データではないことがわかりました。ただし、いくつかのソースを見つけた後、これらのデータを Graphics2D クラスによって実際にピクセルに変換できます。
これらの情報を見つけたリソースは、
コア Java 2、ボリューム II - 高度な機能、著者 - Cay S. Horstmann および Gary Cornell
しかし、私は実際の例をグーグルで検索しましたが、うまくいきませんでした。
これについてもっと読むことができる情報源を知っている人はいますか。そして、誰かが実際にこのようなことをした例があれば、それはより有益です.
これまでの調査: これまでのところ、メートル単位のピクセル数の Graphics2D クラスに仮定を与える必要があることがわかっています。Graphics2D には、この仮定を設定するのに役立つメソッドがあります。方法は、
上記のコードを試しましたが、実際に描きたいところに線を引くのは本当に難しいです。
理解の助けは非常に役に立ちます。
ありがとう
java - Java の Path2D を使用したペン ツールの作成に関する問題
Path2D クラスをマウス リスナーと組み合わせて使用して、Java 描画プログラム用のペン ツールを作成しようとしてきましたが、不可解な結果が得られました。ツールは数秒間動作しますが、その後アプリケーション全体がフリーズし、閉じる必要があります。(ここでは例外は発生しません。プログラムはフリーズするだけです)。この問題を示す SSCCE は次のとおりです。
ここで完全に機能する独自のPath
クラスを作成しましたが、Path2D クラスの追加機能の一部を使用したいと考えました。
私はここで何か間違ったことをしていますか、それともPath2Dは私がやろうとしていることを実行できませんか?
どんな助けでも大歓迎です。
java - Java でビデオを再生する
ここに問題があります: Java でビデオ (あらゆる種類: avi、wav など) を再生する必要があります。数日前に JMF API を試しましたが、ビデオが再生されません。それ以来、バグが多くてサポートが切れていると聞いたので、あきらめました。jffmpeg も試してみましたが、プログラムを実行する前にプレゼンテーションを少しだけ再生したいだけなので、重すぎます。これを行う他の方法、私が試すことができる別のライブラリはありますか?