我想将一些任意文本转换为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.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); } }
getGlyphOutline(glyphIndex)