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

简介: 全网首发: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称之为绘制句柄

目录
相关文章
|
Java
JDK中字符的宽度计算流程
JDK中字符的宽度计算流程
74 0
|
缓存 Java
全网首发:JDK绘制文字:七、使用字体图像进行绘制
全网首发:JDK绘制文字:七、使用字体图像进行绘制
93 0
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
74 0
|
Java
全网首发:JDK绘制文字:四、绘制文字的具体函数分析
全网首发:JDK绘制文字:四、绘制文字的具体函数分析
82 0
|
Java
JDK绘制文字的流程与代码分析
JDK绘制文字的流程与代码分析
89 0
|
Java
全网首发:JDK绘制文字系列博文汇总
全网首发:JDK绘制文字系列博文汇总
94 0
|
Java
全网首发:JDK绘制文字:八、绘制函数简要分析
全网首发:JDK绘制文字:八、绘制函数简要分析
109 0
|
缓存 Java
全网首发:JDK绘制文字:七、使用字体图像进行绘制
全网首发:JDK绘制文字:七、使用字体图像进行绘制
106 0
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
119 0
|
Java
全网首发:JDK绘制文字:五、字体上下文产生流程
全网首发:JDK绘制文字:五、字体上下文产生流程
99 0