2012-03-19 31 views
5

私はいくつかのシェイプを作成して学習していますが、アンチエイリアシングのようにすべてがぼやけているようですが、私はエフェクトを使用していません(これらのレッスンはまだありません)。 exempleについてはJavaFXグラフィックスが「ぼやけ」またはアンチエイリアス?

、私は1つのピクセル幅の黒その背景に白い線を引くが、it'sはグレー入手!幅を2pxに変更すると、白くなりますが、まだ実際には定義されていません。私は私が見つけたすべてのものを「googleingた」

は形状にする方法setSmooth(false)試合だったが、それはどんな違いがありません。ステージやシーンで変更や無効化が必要なことはありますか?

何か助けていただければ幸いです。アドバイスありがとうございました...

私の英語についてはまだ改良が必要です。でも、それは私の自然言語ではありません。

答えて

3

Shapeマニュアルを参照してください:

ほとんどのノードには、かなり頻繁に彼らは整数だけでなく座標使用して定義されているそれらに適用されるだけで、整数の翻訳を持っている傾向があると 。 この一般的なケースでは、直線エッジを持つ形状の塗りつぶしは、 が鮮明である傾向があります。これは、 整数デバイスの座標にあるピクセルの間の亀裂と一直線に並んでいるため、当然 ピクセル全体をカバーする傾向があります。デフォルトストローク属性は デフォルトのストローク幅は、多くの場合、正確に1 デバイスピクセルにマップ1.0の座標であり、また、脳卒中ことことの両方を指定しているため、同じ形状は、多くの場合、ファジー につながる可能性がストロークが概説一方

、境界線の両側に半分になるように、形状は の境界に跨っていなければなりません。 多くの一般的な図形の枠線は整数 の座標に直接当てはまる傾向があり、これらの整数座標は多くの場合、整数デバイスの位置に正確に対応します。境界線は、ピクセルの行と列の両端に50%のカバレッジをもたらしがちです。 1つまたは他のものに対して100%のカバレッジではなく、 形状のボーダーしたがって、塗りつぶしは一般的には、 が鮮明になることがありますが、ストロークはしばしば曖昧です。またはStrokeTypeのいずれかを指定する - 何の規模が有効で変換していないがある場合、2.0の がこれを達成する通常ストローク幅 -

二つの一般的なソリューションこれらのファジーアウトラインを回避するためには、完全に多くのピクセルをカバーする広い ストロークを使用しています.INSIDE又はStrokeType.OUTSIDE ストロークスタイル - れるだけ形状の 境界内外全画素行または列の 一方にバイアスデフォルト単一ユニットのストロークをします。

またNodeのドキュメントを参照:デバイスピクセルレベルで

を、整数画素と画素の中心との間の角部 やクラックにマップ座標との間の 中点に現れます整数ピクセル位置。すべての座標 の値が浮動小数点数で指定されているため、 は、これらのコーナー(浮動小数点値が の正確な整数値を持つ場合)またはピクセル上の任意の場所を正確に指すことができます。たとえば、 の座標(0.5、0.5)は、ステージ上の左上の ピクセルの中心を指します。同様に、次元 が10×10の(0,0)の矩形は、ステージ上の左上の ピクセルの左上隅から、 番目のスキャンラインの10番目のピクセルの右下隅までの範囲になります。その 矩形内の最後のピクセルのピクセル中心は座標(9.5,9.5)になります。

あなたは奇妙なストローク幅を持っているときにきれいなラインのためにあなたのオプションは次のとおりです。

  1. はStrokeType.INSIDEまたはStrokeType.OUTSIDEストロークのスタイルを使用してください。
  2. シェイプの座標をピクセルの0.5でオフセットして、ストロークがライン間の亀裂ではなくライン上に並ぶようにします。
  3. ストロークの幅として次の偶数を使用してください。 setSmooth(false)が動作しない理由として、1 => 2、3 => 4、など

、私は正確に知らない、私の推測では、それが参照するアンチエイリアスはスタイルが行われ、アンチエイリアシングとは独立しているということですストロークはピクセル間の亀裂に集中していますが、その理由は分かりません。

+0

私はペーストしたものすべてを読みました(そして、私はちょっと恥ずかしがり屋になりましたが、javafoc = \を見て覚えていないことがあります)。 1 - 1ピクセル幅のラインで、INSIDEを設定すると、ラインが消えます! OUTSIDEを使用すると、合計2ピクセル幅になります。 2 - これは完璧な結果でした...私はthasと一緒に行くつもりです... 3 - これもうまくいきました。これは私が以前に見つけた解決策でしたが、偶数... とにかく、本当にあなたの返事に感謝し、それは私の問題をすべて解決しました。そして教えてください:尋ねる前に、javadocを読んでください! lol ... –

+0

これは妥当な質問で、特に 'setSmooth'に関連した動作は少し微妙で、特に直感的ではありません。 – jewelsea

+0

私は行を壊そうとするためにEnterキーを押すと私のコメントを編集し、ちょうど最初の部分を確認しました...もう一度ありがとう! –

関連する問題