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

测试代码:

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称之为绘制句柄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值