問題タブ [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.
java - TextLayoutおよびLineBreakMeasurerでのjava2dユーザースペース測定の使用
IDカードを印刷するためにユーザースペース(mm)で定義されたjava2dイメージがあります。ピクセルへの変換は、必要なDPI(画面または印刷)にAffineTransformを使用することによって行われます。
テキストを複数行に折り返したいのですが、TextLayoutはユーザースペースの座標を尊重しません。ラップされたテキストをリージョンに書き込むために、以下を使用していました。
上記のコードは、フォントのユーザースペースサイズを使用してフォントメトリックを決定するため、かなり大きくなります。フォントサイズは、以下のように計算して、領域内の行数に最適な垂直方向のフィットとして計算されます。例えば
g2d.drawString( "表示するテキスト"、x、y)を使用すると、フォントサイズが正しく表示されます。
ユーザースペースの調整でテキストレイアウトを行うためのより良い方法を持っている人はいますか?
java - JPEG ファイルを読み取るための ImageIO の 100% Java 代替手段はありますか?
Java2D を使用して、Web サイトにアップロードされた写真のサイズを変更していますが、問題が発生しました (一見古い問題、参照: http://forums.sun.com/thread.jspa?threadID=5425569 ) - いくつかの特定の JPEGバイナリデータを含む InputStreamCMMException
を試みると、 aが発生します。ImageIO.read()
ImageIO.read()
(呼び出し、サーブレット コードなどであるスタック トレースの残りの部分を切り取りました)
特定のカメラで撮影した写真に絞り込み、このエラーをトリガーする写真を選択しました: http://img214.imageshack.us/img214/5121/estacaosp.jpg . これは Sun の JVM でのみ発生することに気付きました (Linux および Mac では、1.6.0_20 でテストしたところです)。OpenJDK を使用したテスト マシンは、おそらく JPEG リーダーの実装が異なるため、問題なく同じ写真を読み取ります。
残念ながら、本番環境で JVM を切り替えることも、ImageMagick ( http://www.imagemagick.org/ )などのネイティブに依存するソリューションを使用することもできません。
それを考慮して、私の質問は次のとおりです。リンクされたような写真を処理できる ImageIOs JPEG リーダーの代替品は存在しますか? そうでない場合、使用できる 100% 純粋な Java の写真のサイズ変更ソリューションは他にありますか?
ありがとうございました!
java - JTable セルが形状を正しくレンダリングしない
サブクラス化された JPanel を使用して JTable セルをレンダリングしようとしています。セルは、円が描かれた色付きの長方形として表示されます。テーブルが最初に表示されたときはすべて問題ないように見えますが、削除されたときにセルの上にダイアログまたは何かが表示されると、覆われたセルが適切にレンダリングされず、円が分割されます。その後、スクロールバーを移動する必要がありますまたはウィンドウを拡張して、適切に再描画できるようにします。
セルをレンダリングするために使用しているコンポーネントの paintComponent メソッドは次のとおりです。
java - NetbeansGUIでpaintComponentをオーバーライドする
Netbeansで生成されたGUIにJPanelを追加し、小さな赤いボックスBoxThing
をオーバーライドして描画するJPanelを追加しましたが、表示されず、呼び出されることもありません。自分のJFrameをインスタンス化し、BoxThingを含むJPanelを入れると、正常に動作します。paintComponent
paintComponent
私はこの質問がランダムなフォーラムで何度か尋ねられるのを見ました、そして人々は質問に答えません、代わりに彼らはカスタムペイントチュートリアルを指します、それは明らかに助けにはなりません。
最初にNetbeans5.5を試してから、同じ問題でNetbeans6.8に切り替えました。
Main.java
BoxThing.java
ご覧のとおり、BoxThing.java
'sを実行するだけで機能しますmain
。Netbeans GUIを実行すると、機能しません。では、Netbeansで生成されたSwing GUIにカスタムコンポーネントを追加するにはどうすればよいですか?
xml - Java Swing での操作
私のプロジェクトでは、XML ファイルからいくつかのポイントの座標を取得し、この情報を使用していくつかのビジュアル コンポーネントを作成しますか? これらのコンポーネントを Java Swing フレームまたはパネルに追加する予定です。ただし、ユーザーは図 (Graphics 2d ライブラリを使用して構築します) をクリックし、2 つの点を選択して、それらの 2 つの点の間の点にラベルを付ける必要があります。JFrame または JPanel (つまり、この種のアクションのイベント) でクリックされたクリックを取得するにはどうすればよいですか?
java - これは悪い習慣ですか?複数の Graphics2D オブジェクト
すべてのグラフィックを保持する JPanel キャンバスを作成しました。つまり、JLabel. アニメーション化されたスプライトを機能させるには、拡張された JLabel クラスの paintComponent をオーバーライドする必要があります。この方法で、アニメーション化されたスプライトを正常に実装しました。
Graphics2D キャンバスを作成してから、独自の Graphics2D に複数の「画像」を作成するのは悪い習慣ですか?
swt - より高速:SWTまたはJava2D?
グラフィックパフォーマンスが速いのはSWTとJava2Dのどちらですか?
MacOSXでは、SWTのグラフィックスはQuartz Extremeを通過し、Quartz ExtremeはハードウェアアクセラレーションされたOpenGLを使用してレンダリングされますか?
ネイティブUIコントロールについては言及していませんが、テキスト、線、曲線、ポリゴンなどのカスタム2Dグラフィックスレンダリングについて質問しています。
java - Java Swingでドロップシャドウ、内部グロー、外部グローを作成するにはどうすればよいですか?
Graphics2Dインターフェイスを使用していくつかの画像を生成していますが、画像にテキストを描画して、AdobePhotoshopのような効果を適用できるようにしたい場合があります。
現在、テキストに「影」を生成するために、テキストを2回描画しています。1回は元の色で、もう1回はわずかな(1px)x&yオフセットのある黒です。残念ながら、シャドウ(不透明度、サイズ、広がり)をより細かく制御する必要があるため、これは非常に単純です。
インナーグローとアウターグローについては、どこから始めればいいのかよくわかりません。マスク/グラデーションペイント/アルファブレンディング?
これらのタイプの効果を生成するためのJavaライブラリはありますか?そうでない場合は、これらの効果をどのように作成しますか?
performance - TextLayout.draw(..) の Java2D パフォーマンスを改善するにはどうすればよいですか?
Java2Dクラスを aおよび an とTextLayout
一緒に使用して、テキストをボックスに描画しています。テキストが折り返されます。LineBreakMeasurer
AttributedCharacterIterator
プロファイリングは、コードが非常に遅いことを示しています。ほとんどの時間はメソッドで失われTextLayout.draw(..)
ます。
速度を改善するための提案はありますか?
関連するコード スニペットを上に示します。attribText
前のAttributtedString
セットです。context
ですg2d.getFontRenderContext()
。
java - java2d オブジェクトの非破壊変換
距離を広げるだけで、線を太くすることなく、Path2D.Double で作成された Java2D シーンをズームおよびズーム解除できるようにしたいと考えています。
paintComponent メソッドが受け取る Graphics2D オブジェクトに変換を適用しようとしましたが、これにより線が太くなります。私が見つけた唯一の方法は、線に変換を適用することでした(line.transform(AffineTransform.getScaleInstance(2d,2d))
たとえば)が、ズームとズーム解除を再度行うたびに、浮動小数点エラーのために情報が失われます。
簡単に言えば、変換は破壊的です。「線の内容を変更せずに、その変換を適用してこの線を描きたい」と言う方法はありますか?