【问题标题】:JSVGCanvas svg is blurryJSVGCanvas svg 模糊
【发布时间】:2022-01-18 18:24:43
【问题描述】:

我已经从http://people.apache.org/~clay/batik/svgcanvas.html 复制粘贴了很多代码 但输出的 svg 是模糊的。我同时使用了 fontawesome 和材质 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);

    }
}

【问题讨论】:

  • 你需要开启抗锯齿
  • System.setProperty("awt.useSystemAAFontSettings","on"); System.setProperty("swing.aatext", "true");在main方法中
  • 对我没用...@JustanotherJavaprogrammer
  • @JustanotherJavaprogrammer 实际上做到了!

标签: java swing svg batik


【解决方案1】:

因此,在我的另一个问题 (here) 的帮助下,我得出了这个结论。
由于我正在使用 14 英寸屏幕的笔记本电脑,Windows 建议将我的屏幕缩放到 125% 以提高可读性。
因此,在这个答案 (here) 的帮助下,我为我的 java.exe 将 "High DPI scaling override" 设置为 "System"
但即使它修复了 svg 的显示方式,它的文本也存在问题。所以我添加了 System.setProperty("awt.useSystemAAFontSettings","on"); System.setProperty("swing.aatext", "true"); @JustanotherJavaprogrammer 在 cmets 中提到,现在一切似乎都已修复。

【讨论】:

    猜你喜欢
    • 2015-03-11
    • 2012-02-15
    • 2019-04-01
    • 2018-07-11
    • 2017-12-01
    • 2016-10-29
    • 2012-09-06
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多