java / swing:将文本字符串转换为Shape
发布时间:2020-12-14 05:33:32 所属栏目:Java 来源:网络整理
导读:我想将一些任意文本转换为Shape( java.awt.Shape ),然后对Shape进行描边/填充.我该怎么做? 解决方法 嗯,我不知道这个答案,但经过一点点调整和戳在Eclipse内容协助后,我发现这似乎是你需要的: 编辑:我改为代码来改变字符串显示的方式是什么原因你问你问了
我想将一些任意文本转换为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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |