問題タブ [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 投票する
9 に答える
42388 参照

java - Java 2D 描画の最適なパフォーマンス

Java 2D ゲームを作成中です。私は組み込みの Java 2D 描画ライブラリを使用して、JFrame の Canvas の BufferStrategy から取得した Graphics2D に描画しています (これは時々フルスクリーン表示されます)。BufferStrategy はダブル バッファリングされます。再描画は、タイマーを介して積極的に行われます。ただし、特に Linux では、いくつかのパフォーマンスの問題があります。

Java2D には、グラフィックス バッファを作成し、グラフィックスを描画する方法が非常に多くあるため、自分が正しいことを行っているかどうかわかりません。私は、有望に見えるgraphics2d.getDeviceConfiguration().createCompatibleVolatileImageを試してきましたが、描画コードをそれに切り替えればもっと速くなるという本当の証拠はありません。

あなたの経験では、Java 1.5+ で 2D グラフィックスを画面にレンダリングする最速の方法は何ですか? ゲームはかなり先のことなので、OpenGL やゲーム エンジンなど、まったく別の描画方法に切り替えたくありません。私は基本的に、Graphics2D オブジェクトを使用して画面に描画する最速の方法を知りたいと思っています。

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

java - Java2D: Graphics オブジェクトを Line でクリッピングする

Graphics オブジェクトの 'setClip()' メソッドを使用して、線っぽい形状を使用してクリップする方法はありますか? 現在、ポリゴン形状を使用しようとしていますが、線の「幅」をシミュレートするのに問題があります。私は基本的に線を描き、最後に達したら描き直しますが、今回はy座標から線幅を引きます:

ほとんど機能しますが、線の幅は傾きによって異なります。

BrushStroke メソッドと drawLine() メソッドは使用できません。これは、線が任意の基準線を通過すると色が変わる可能性があるためです。私が見落としていた Shape の実装、またはこれをより簡単に行えるようにする簡単な実装はありますか?

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

java - Java2D: Graphics を Graphics2D にキャストすることは常に安全ですか?

常に Sun JVM (たとえば、1.5+) を使用すると仮定すると、Graphics 参照を Graphics2D にキャストすることは常に安全ですか?

私はそれが問題を引き起こすのを見たことがありません。私の理解では、Graphics クラスはレガシー コードですが、Java 設計者は下位互換性を維持するために Swing および AWT クラスのインターフェイスを変更したくありませんでした。

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

java - Java2D のパフォーマンスの問題

Java2D のパフォーマンスに問題があります。2D の 3D アクセラレーションを有効にする sun.java2d.opengl VM パラメータについては知っていますが、それを使用しても奇妙な問題がいくつかあります。

私が実行したテストの結果は次のとおりです。


JComponentイメージ 1 = .bmp 形式、イメージ 2 = .png 形式で 32x32 ピクセル タイルを使用して 25x18 マップを描画する

-Dsun.java2d.opengl=true なし

.BMP 画像 1 を使用した 120 FPS
.PNG 画像 2 を使用した 13 FPS

-Dsun.java2d.opengl=true を使用

.BMP 画像 1 を使用した 12 FPS
.PNG 画像 2 を使用した 700 FPS

アクセラレーションがなければ、ソフトウェアで行うすべての drawImage() で何らかの変換が行われ、.PNG の場合は FPS が大幅に低下していると想定しています。しかし、アクセラレーションを使用すると、結果が切り替わるのはなぜですか (そして、PNG は実際には信じられないほど高速に実行されます)。クレイジー!

.BMP 画像 1 は、TYPE_INT_RGB の画像タイプに変換されます。.PNG Image 2 は、TYPE_CUSTOM のイメージ タイプに変換されます。OpenGL アクセラレーションの有無にかかわらず一貫した速度を得るには、TYPE_INT_ARGB のイメージ タイプで新しい BufferedImage を作成し、この新しいイメージにイメージ 1 またはイメージ 2 を描画する必要があります。

それを実行した結果は次のとおりです。

-Dsun.java2d.opengl=true なし

.BMP 画像 1 を使用した
120 FPS .PNG 画像 2 を使用した 120 FPS

-Dsun.java2d.opengl=true を使用

.BMP 画像 1 を使用した
700 FPS .PNG 画像 2 を使用した 700 FPS

私の本当の質問は、TYPE_INT_ARGB がすべてのシステムとプラットフォームのネイティブ イメージ タイプになると仮定してよいでしょうか? この値は異なる可能性があると想定しています。最大のパフォーマンスを得るために常に新しい BufferedImages を作成できるように、ネイティブ値を取得する方法はありますか?

前もって感謝します...

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

java - スクロールバーの生の Java 2D 実装

標準の Java 2D を使用して独自のスクロールバーを作成するにはどうすればよいでしょうか。

私は本当にswingを使いたくありません.ボタンなどの他のすべてのコンポーネントパーツはすでに独自に作成しています.

私は実際にはコードを探しているのではなく、イベントの変更と描画に関連する数学を探しています。

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

java - Java を使用した単純な 2D グラフィックスに最適な API

Java を使用した単純な 2D グラフィックスに最適な API が何であるかはわかりません。java.awt.Graphics2Dスタンダードだったのは知ってるけど、取り替えられたの?Swing は Java GUI アプリケーション用の新しい API ですが、私が望むものには少し重いようです。私が本当に欲しいのは、C SDL ライブラリのようなものです。

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

java - groovy.swing.factory.BindProxyFactory はどこにありますか?

GraphicsBuilder を使用しようとすると、java.lang.NoClassDefFoundErrorfor が表示されgroovy.swing.factory.BindProxyFactoryます。

これは私の環境です:

そして、これは私がやろうとしていることです:

BindProxyFactoryBean はどこにありますか?

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

flash - Java2D を介してベクトル グラフィックス フォーマットをレンダリングするためのオープン ソース ライブラリ?

EPS、SWF、SVG、VML、PDF など、Java2D でエンコードされたグラフィックスをベクトル グラフィックス フォーマットにレンダリングするためのオプションとは?

Batikは、SVG のレンダリングに最も広く使用されているライブラリです。他にどのようなオプションがありますか?

iTextは、PDF のレンダリングに広く使用されています。機能的ではないが、おそらくもっと単純なものはありますか?

Java2D から SWF (Flash) をレンダリングするには、直感的ではないにしても、Flagstone SoftwareのTransform SWFが非常に効果的であることがわかりました。

あまり人気のないライブラリ、または始めたばかりのプロジェクトのうち、注目に値するものはどれですか?

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

java - コードは Java グラフィックでは機能しますが、graphics2d では機能しません

ペイントコンポーネント内。パラメータとして g を取り、g はグラフィックスまたは graphics2d にすることができます。クラスは jpanel を拡張します。それから:

g がグラフィックスの場合は機能しますが、graphics2d の場合は機能しません。両方でコンパイルされますが、graphics2d は背景色を変更しません。どうして?

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

java - オンザフライで Java2D のスプライトに色を付けますか?

LinuxでJava2Dを使用してASCIIのようなマップでゲームを作成しています(ローグライクのように)。

Graphics2D.drawImage を介して BufferedImages をレンダリングすることにより、地形がレンダリングされます。パフォーマンスをあまり損なうことなく、描画された各画像の色合いをその場で変更したいと思います。どうすればこれを達成できますか?

setComposite はパズルの一部だと思います。現在、背景をそのままにしておく必要はありません (透明度は問題になりません)。さまざまな色を使用したいので、着色されたスプライトを事前に生成することは解決策ではありません。