2011-06-23 3 views
4

graphics.drawString()と表示されたGUIのフォントスタイルとレンダリングが異なり、デフォルトのJLabelが有効になっているのはなぜですか?そして私はそれをどのように修正できますか?graphics.drawString()でのフォントレンダリングと、ClearTypeでのデフォルトのJLabelとの違いは何ですか?

Image to show the differents

+0

を試してみてください。 [このスレッド](http://stackoverflow.com/questions/6444869/how-do-i-read-pixels-from-a-png-file-in-java/6445283#6445283)のソースを使用していくつかの代替案を試してみてください。 。 –

答えて

5

それはおそらく文字列を描画するために使用されるオプションに関連して、この

Graphics2D g2d = (Graphics2D)g;  
Font font = new Font("Arial", Font.PLAIN, 12); 

g2d.setFont(font); 
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
g2d.drawString("Hello World", 25, 100); 
+0

提案されたソリューションは、フォントレンダリングを少し改良しましたが(または少なくとも_different_)、クリアタイプを有効にするのではなく、フォントのアンチエイリアスのみを有効にしています。フォントのアンチエイリアス処理では、灰色の半透明のピクセルが使用され、CRTディスプレイで良好な画像が得られます。 Cleartypeは、半透明のRおよびBピクセルを使用して、TFTディスプレイ上にサブピクセルの予期された解像度を与える。 TFTのサブピクセルの順序が異なるため、JLabelと同じ品質を得ることはできません。ただし、JLabel(またはSwingで初期化されたGraphicsコンテンツ)をサブクラス化し、後で使用するためにアンチエイリアス設定を_all_で抽出する場合は例外です。 –

関連する問題