java / swing:将文本字符串转换为Shape [英] java/swing: converting a text string to a Shape

查看:142
本文介绍了java / swing:将文本字符串转换为Shape的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将一些任意文本转换为Shape( java.awt.Shape ),然后笔画/填充Shape以绘制它。我怎么能这样做?

解决方案

嗯,我不知道这个答案,但经过一些调整, Eclipse内容帮助我发现这似乎是你所需要的:

编辑:我改变了代码来改变字符串的显示方式,这就是原因你问你问什么:)试试吧。它呈现红色和虚线轮廓的字符串

  import java.awt.BasicStroke; 
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.Gly​​phVector;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test扩展JPanel {

private Shape s;
$ b $ public Test(){
Font f = getFont()。deriveFont(Font.BOLD,70);
GlyphVector v = f.createGlyphVector(getFontMetrics(f).getFontRenderContext(),Hello);
s = v.getOutline();
setPreferredSize(new Dimension(300,300));
}
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 =(Graphics2D)g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2.translate(100,150);
g2.rotate(0.4);
g2.setPaint(Color.red);
g2.fill(s);
g2.setPaint(Color.black);
g2.setStroke(new BasicStroke(3,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,1,new float [] {1,0.4f,1.5f},0));
g2.draw(s);


public static void main(String [] args){
JFrame f = new JFrame(Test);
Component c = new Test();
f.getContentPane()。add(c);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);


$ / code $ / pre

另外请注意,你可以从字符串调用:

pre $ getGlyphOutline(glyphIndex)


I want to convert some arbitrary text to a Shape (java.awt.Shape) and then stroke/fill the Shape to draw it. How can I do this?

解决方案

Hm I did not know the answer to this but after a bit tweaking and poking around in with Eclipse content assist i found this which seems to be what you need:

EDIT: i changed to code to change the way the string is displayed which is the reason you asked what you asked :) Try it. It renders the string with red color and a dashed outline

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.GlyphVector;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JPanel{

    private Shape s;

    public Test() {
        Font f = getFont().deriveFont(Font.BOLD, 70);
        GlyphVector v = f.createGlyphVector(getFontMetrics(f).getFontRenderContext(), "Hello");
        s = v.getOutline();
        setPreferredSize(new Dimension(300,300));
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g.create();
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.translate(100, 150);
        g2.rotate(0.4);
        g2.setPaint(Color.red);
        g2.fill(s);
    g2.setPaint(Color.black);
        g2.setStroke(new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[]{1,0.4f,1.5f}, 0));
        g2.draw(s);
    }

    public static void main(String[] args) {
        JFrame f = new JFrame("Test");
        Component c = new Test();
        f.getContentPane().add(c);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }
}

Also note that you can get the individual characters from the string by calling:

getGlyphOutline(glyphIndex)

这篇关于java / swing:将文本字符串转换为Shape的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆