JSVGCanvas svg 模糊
JSVGCanvas svg is blurry
我几乎复制粘贴了 http://people.apache.org/~clay/batik/svgcanvas.html 中的代码
但是输出的 svg 是模糊的。我同时使用了 fontawesome 和 material ui svg,但两者都很模糊。我究竟做错了什么?这是我的代码:
public class GUI extends JFrame{
public void init(){
initFrame();
CardLayout cl = new CardLayout();
JPanel panel = new JPanel(cl);
panel.add(createHome(), "HOME");
panel.setBackground(new Color(200, 0, 50));
cl.show(panel, "HOME");
add(panel);
setSize(1280, 720);
setVisible(true);
}
private JPanel createHome(){
JPanel p = new JPanel(new BorderLayout());
{
JPanel d = new JPanel(new FlowLayout(FlowLayout.LEFT));
d.setBackground(new Color(0, 0, 0, 0));
p.add(d, BorderLayout.PAGE_START);
JSVGCanvas svg = new JSVGCanvas();
d.setSize(this.getWidth(), 50);
d.add(svg);
String s = new File("images/userIcon3.svg").toURI().toString();
svg.setMySize(new Dimension(200, 200));
svg.setURI(s);
}
p.setBackground(new Color(0, 50, 200));
p.setSize(this.getWidth(), this.getHeight());
return p;
}
private void initFrame(){
int width = 1280, height = 720;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int swidth = screenSize.width, sheight = screenSize.height;
setTitle("Travelling Agency");
setLocation((swidth - width) / 2, (sheight - height) / 2); //Position it in the center
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
所以在我的另一个问题(here)的帮助下,我得出了这个结论。
由于我在 14 英寸屏幕的笔记本电脑上工作,Windows 建议将我的屏幕缩放到 125% 以提高可读性。
因此,在这个答案 (here) 的帮助下,我将 "High DPI scaling override" 设置为 "System"我的 java.exe。
但是即使它修复了 svg 的显示方式,文本也有问题。所以我添加了 System.setProperty("awt.useSystemAAFontSettings","on");
System.setProperty("swing.aatext", "真");
@JustanotherJavaprogrammer 在评论中提到,现在一切似乎都已修复。
我几乎复制粘贴了 http://people.apache.org/~clay/batik/svgcanvas.html 中的代码 但是输出的 svg 是模糊的。我同时使用了 fontawesome 和 material ui svg,但两者都很模糊。我究竟做错了什么?这是我的代码:
public class GUI extends JFrame{
public void init(){
initFrame();
CardLayout cl = new CardLayout();
JPanel panel = new JPanel(cl);
panel.add(createHome(), "HOME");
panel.setBackground(new Color(200, 0, 50));
cl.show(panel, "HOME");
add(panel);
setSize(1280, 720);
setVisible(true);
}
private JPanel createHome(){
JPanel p = new JPanel(new BorderLayout());
{
JPanel d = new JPanel(new FlowLayout(FlowLayout.LEFT));
d.setBackground(new Color(0, 0, 0, 0));
p.add(d, BorderLayout.PAGE_START);
JSVGCanvas svg = new JSVGCanvas();
d.setSize(this.getWidth(), 50);
d.add(svg);
String s = new File("images/userIcon3.svg").toURI().toString();
svg.setMySize(new Dimension(200, 200));
svg.setURI(s);
}
p.setBackground(new Color(0, 50, 200));
p.setSize(this.getWidth(), this.getHeight());
return p;
}
private void initFrame(){
int width = 1280, height = 720;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int swidth = screenSize.width, sheight = screenSize.height;
setTitle("Travelling Agency");
setLocation((swidth - width) / 2, (sheight - height) / 2); //Position it in the center
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
所以在我的另一个问题(here)的帮助下,我得出了这个结论。
由于我在 14 英寸屏幕的笔记本电脑上工作,Windows 建议将我的屏幕缩放到 125% 以提高可读性。
因此,在这个答案 (here) 的帮助下,我将 "High DPI scaling override" 设置为 "System"我的 java.exe。
但是即使它修复了 svg 的显示方式,文本也有问题。所以我添加了 System.setProperty("awt.useSystemAAFontSettings","on");
System.setProperty("swing.aatext", "真");
@JustanotherJavaprogrammer 在评论中提到,现在一切似乎都已修复。