您当前的位置: 首页 > 

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4642博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

OFFICE技术讲座:JDK绘制旋转字体的效果(水平)

柳鲲鹏 发布时间:2022-04-18 08:43:05 ,浏览量:0

  • 效果图100%

  • 效果图300%

  •  测试源码-RotateFontFrameAbstract
package taishan;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.TextAttribute;
import java.awt.geom.AffineTransform;
import java.util.HashMap;

@SuppressWarnings("serial")
public abstract class RotateFontFrameAbstract extends TFrame
{
    protected final static String FONT_NAME  = "宋体";
    protected final static int    FONT_SIZE  = 16;
    protected final static int    POS_OFFSET = 100;
    
    protected final static Color COLOR_LINE = Color.BLUE;
    protected final static Color COLOR_FONT = Color.BLACK;
	
    protected final static char[] TAISHAN = "泰山一!Office-!".toCharArray();
    protected final static AffineTransform ROTATE_0   = AffineTransform.getRotateInstance( 0);
    protected final static AffineTransform ROTATE_90  = AffineTransform.getRotateInstance( Math.PI / 2);
    protected final static AffineTransform ROTATE_180 = AffineTransform.getRotateInstance( Math.PI   );
    protected final static AffineTransform ROTATE_270 = AffineTransform.getRotateInstance( Math.PI *1.5);

    protected Font[] rotateFonts = new Font[4];
	
	protected abstract void drawRotateFonts(Graphics g);

	public RotateFontFrameAbstract()
	{
	    this.getContentPane().setBackground(Color.WHITE);
	    
	    HashMap attrs = new HashMap();
	    attrs.put(TextAttribute.FAMILY,         FONT_NAME);
	    attrs.put(TextAttribute.SIZE,           FONT_SIZE);
	    Font temp = new Font(attrs);
	    
	    rotateFonts[0] = temp.deriveFont(ROTATE_0);
	    rotateFonts[1] = temp.deriveFont(ROTATE_90);
	    rotateFonts[2] = temp.deriveFont(ROTATE_180);
	    rotateFonts[3] = temp.deriveFont(ROTATE_270);
	}

	protected final void antiAliasing(Graphics2D g2d)
	{
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,   RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,   RenderingHints.VALUE_FRACTIONALMETRICS_ON);
	}
	
	@Override
    public final void paint(Graphics g)
    {
		super.paint(g);
		
		drawRotateFonts(g);
    }
	
}
  • 测试源码-RotateFontFrameHorizental
package taishan;

import java.awt.Graphics;

@SuppressWarnings("serial")
public class RotateFontFrameHorizental extends RotateFontFrameAbstract
{

	@Override
	protected void drawRotateFonts(Graphics g)
	{
		antiAliasing((java.awt.Graphics2D)g);
		
		int xunit = 20;
		int yunit = 50;
		
		g.setColor(COLOR_LINE);
		g.drawLine(POS_OFFSET, POS_OFFSET, POS_OFFSET, POS_OFFSET+200);
		
		for (int i=0; i            
关注
打赏
1665724893
查看更多评论
0.0536s