本帖最后由 thunderbird521 于 2014-02-02 23:19:53 编辑

解决方案 »

  1.   

    你需要的功能应该是 "string to shape"Font 本身应该包含了矢量绘图的信息,所以应该可以,搜了一下找到下面这个,你可以试一下:http://stackoverflow.com/questions/2466233/java-swing-converting-a-text-string-to-a-shape
      

  2.   

    @raistlic,你发的帖子是英文的看不懂,另外有没有“Font 本身应该包含了矢量绘图”相关的例子啊,我看Font构造方法就三个参数Font font = new Font("黑体", Font.PLAIN, 25);分别是字体,样式,和字号,没有你说的“矢量绘图”。
      

  3.   


    这话程序猿不能说,——看不懂,查词典。而且那帖子里第一个回答就是代码示例,代码总能看懂吧,里面的代码稍微改一下就能看到效果:import javax.swing.*;
    import java.awt.*;
    import java.awt.font.GlyphVector;public class Test extends JComponent {  public static void main(String[] args) {    SwingUtilities.invokeLater(new Runnable() {      @Override
          public void run() {        JFrame test = new JFrame("Test");        test.setContentPane(new Test());
            test.pack();
            test.setLocationRelativeTo(null);
            test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            test.setVisible(true);
          }
        });
      }  Test() {    setPreferredSize(new Dimension(800, 600));
      }  @Override
      protected void paintComponent(Graphics g) {    Font f = new Font("Courier New", Font.BOLD, 140);
        GlyphVector v = f.createGlyphVector(getFontMetrics(f).getFontRenderContext(), "Hello");
        Shape shape = v.getOutline();    Rectangle bounds = shape.getBounds();    Graphics2D gg = (Graphics2D) g;
        gg.translate(
                (getWidth() - bounds.width) / 2 - bounds.x,
                (getHeight() - bounds.height) / 2 - bounds.y
        );
        gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        gg.setColor(Color.WHITE);
        gg.fill(shape);
        gg.setColor(Color.BLUE.darker().darker());
        gg.setStroke(new BasicStroke(3));
        gg.draw(shape);
      }
    }
      

  4.   

    终于有个明白人, 设置stroke画笔即可!
    此乃所有图形与图像API的通用做法!
    不知道只能怪你没做过UI渲染! 拍你一下,别介意!