您当前的位置: 首页 > 

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4642博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

全网首发:JDK绘制文字:一、绘制流程

柳鲲鹏 发布时间:2022-03-25 17:29:15 ,浏览量:0

测试代码:

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.FontRenderContext;
import java.awt.geom.AffineTransform;

@SuppressWarnings("serial")
public class DrawCharsFrame extends TFrame
{
	
	private final static char[] TAISHAN = "泰山".toCharArray();

	public BoldFontFrame()
	{
	    this.getContentPane().setBackground(Color.WHITE);
	}
	
	@Override
    public void paint(Graphics g)
    {
		super.paint(g);
		
        g2d.drawChars(TAISHAN, 0, TAISHAN.length, 30, 30);
    }
	
	public static void main(String[] args)
    {
		DrawCharsFrame frame = new BoldFontFrame();
        frame.setSize(600, 400);
        frame.setVisible(true);
    }

}
  • SunGraphics2D.drawChars
  • ValidatePipe.drawChars
  • GlyphListPipe.drawChars

实际上是子类SoldTextRenderer/SoldTextRendererAA绘制的。

  • SolidTextRenderer.drawGlyphList
  • DrawGlyphList.DrawGlyphList

这个是本地函数。

  • DrawGlyphList.c

  Java_sun_java2d_loops_DrawGlyphList_DrawGlyphList调用drawGlyphList绘制。关键参数是pPrim->funcs.drawglyphlist。

  至此,绘制流程就完成了。具体的drawglyphlist是哪个函数,需要分析所在的pPrim(类型NativePrimitive),是怎么初始化的。搞清楚了这个,才知道绘制函数是哪个。

  为了方便,把pPrim称之为绘制句柄。

关注
打赏
1665724893
查看更多评论
立即登录/注册

微信扫码登录

0.0500s