Swingコンポーネントをイメージにレンダリングするとき、フォントはコンポーネントがスクリーンにレンダリングされるときとは異なります。ここでの違いを示す画像である。醜いフォントでイメージレンダリングするコンポーネント
は、これはコードです:
public static BufferedImage renderComponent(Component component) {
int width = component.getWidth();
int height = component.getHeight();
BufferedImage buffImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D) buffImage.getGraphics();
g.setFont(component.getFont());
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
component.paint(g);
g.dispose();
return buffImage;
}
私はSwingコンポーネントの完璧なスクリーンショットを作るために変更する必要がありますか?
全く同じ問題がありました。 'TYPE_INT_ARGB'では、フォントは醜いものであり、オンスクリーンイメージ(良いフォントを持つ)で始まったアニメーション内で使用すると、すべてのテキストがピクセルシフトされているかのように認識されます。それは実際に 'TYPE_INT_RGB'で解決されます。 (私はパネルの内容をぼかすアニメーションシーケンスで画面上と画像上を使用しているので、まずパネルをバッファに描画させてから、アニメーションのバッファをぼかすようにします)。 – Timmos