为什么graphics.drawString()和默认的带ClearType的JLabel会呈现不同的字体效果?

4
为什么使用graphics.drawString()和默认的JLabel启用cleartype后,显示的GUI字体样式/呈现方式不同?如何修复它?

这可能与用于呈现字符串的选项有关。请尝试使用此线程上的源代码尝试一些替代方案。 - Andrew Thompson
1个回答

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);

请注意,尽管所提出的解决方案使字体呈现略微改善(或至少是不同的),但它并没有打开ClearType,而只是使用了字体抗锯齿。字体抗锯齿使用灰色半透明像素,在CRT显示器上呈现良好的图像。ClearType使用半透明的R和B像素,在TFT显示器上提供亚像素感知分辨率。TFT可能具有不同的子像素排序,因此您永远无法获得与JLabel相同的质量。除非您对JLabel进行子类化(或通过Swing初始化的Graphics内容)并提取所有抗锯齿设置以供以后使用。 - Gee Bee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接