2017-11-19 11 views
1

透明部分で文字を描画すると、背景色が輝いていることがわかります。フォントの透明部分を白に変更するにはどうすればよいですか?Java AWTグラフィックスの変更drawString()の背景色

このコードを使用たとえば、私はchess pawn with gray backgroundを得る:

package com.gmail.vstollen; 

import javax.swing.*; 
import java.awt.*; 

public class Example extends JPanel { 

    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 

     g.setColor(Color.GRAY); 
     g.fillRect(0 ,0, getWidth(), getHeight()); 

     //Font containing chess figures 
     g.setFont(new Font("DejaVu Sans", Font.PLAIN, 100)); 

     g.setColor(Color.BLACK); 
     g.drawString("\u2659", 10, 100); 
    } 

    public static void main(String args[]) { 
     JFrame frame = new JFrame("Example"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(200, 200); 
     frame.add(new Example()); 
     frame.setVisible(true); 
    } 
} 

私はthisのようにそれを得るために何ができますか?

+3

私は単純な解決策は存在しないと思います。透明部分は、囲まれたループ内に含まれる部分だけでなく、フォントの外側の周りにも含まれます。 –

+0

@HovercraftFullOfEels *「私は単純な解決策はないと思う」*真実であるが、「あまり単純ではない」解決策は、詐欺に対する答えである。 :) –

+0

@AndrewThompson:確かに!! –

答えて

2

さまざまな理由から、単純な文字列の描画は可能ではないと思います。最も簡単な解決策は、文字列の代わりに画像を使用することです。文字列を実際に使用したい場合は、テキスト色自体を変更してteamColor(あなたが気に入っているもの)を特定することもできます。

0

ちょうどあなたがしたい写真のイメージを作成し、10, 100にそれを描きます。

+0

@HovercraftFullOfEels? OK –

+0

あなたの意図を誤解しました。ごめんなさい。 –