接上文

全网首发:JDK绘制文字一:绘制流程_柳鲲鹏的博客-CSDN博客

  现在来分析,绘制句柄是如何初始化的。

  • GraphicsPrimitiveMgr.c

  在GetNativePrim()中可以看到,绘制句柄是通过反射得到的(对应的变量pNativePrimID,则由反射JAVA字段pNativePrim得到的)。

  问题就变成了:绘制句柄是如何初始化和传递的?

  • DrawGlyphList.java

  是GraphicsPrimitive.java的子类,绘制句柄pNativePrim是GraphicsPrimitive的字段。

  DrawGlyphList构造函数中收到此参数,传递给父类GraphicsPrimitive完成初始化。

  • GraphicsPrimitiveMgr.java

  在静态块中,调用本地函数registerNativeLoops()。

  提前说明,在registerNativeLoops(),又层层调用到NativePrimitive,通过反射调回JAVA,即DrawGlyphList构造函数。

  • GraphicsPrimitiveMgr.c

  Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops,声明了各种格式的RegisterFunc,然后逐个调用进行初始化(这就是loops名字的原因)。从六石编程学来说,应该想办法使用数组。
  以bitmpa来说,应该是RegisterByteBinary1Bit()。我们以此为例,继续分析流程。

  • ByteBinary1Bit.c

声明了本格式的绘制句柄,ByteBinary1BitPrimitives。

调用RegisterPrimitives,传递参数绘制句柄ByteBinary1BitPrimitives。

  • GraphicsPrimitiveMgr.c

NativePrimitive:

  新建了JAVA数组primitives。

  通过for()循环,对绘制句柄的各个函数进行初始化(具体未分析),产生新JAVA对象prim(此处回调到JAVA的DrawGlyphList构造函数,传递参数绘制句柄pPrim。参考registerNativeLoops),然后把设置到primitives中。

  最后把primitives传递到JAVA层,判断为GraphicsPrimitiveMgr的register()。

  至此,绘制句柄初始化流程完成。

全网首发:JDK绘制文字:二、绘制句柄的初始化流程相关推荐

  1. 四川高职计算机二本线学校,全网首发!四川省本科二批次2019年对口高职投档录取线出炉...

    原标题:全网首发!四川省本科二批次2019年对口高职投档录取线出炉 四川省2019年高校招生本科录取接近尾声,二本批次征集志愿于8月1日进行.与此同时,专科批相关录取工作也进入我们视野. 四川省各高校 ...

  2. H5canvas(绘制矩形,绘制圆形,绘制线段,绘制文字,绘制曲线)

    Canvas简介 canvas 最早由Apple引入WebKit,用于Mac OS X 的 Dashboard,后来又在Safari和Google Chrome被实现. 基于 Gecko 1.8的浏览 ...

  3. SRPG游戏开发(五)第三章 绘制地图 - 二 绘制一张简单地图

    返回目录 第三章 绘制地图 一 导入素材 点击进入 二 绘制一张简单地图 这一节我们来看如何绘制一张地图. 1     新建Grid与Tilemap 在Hierarchy面板中,点击Create/2D ...

  4. android开发 之 Canvas绘制文字,图片

    一.Canvas的常用操作速查表 操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基本形状 drawPoint, draw ...

  5. 【Qt】2D绘图之绘制文字

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 基本绘制 04. 使用范围绘制文字 05. 使用字体绘制文字 06. 附录 01. 概述 Qt中除了绘制图形以外,还可以使 ...

  6. OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)

    OpenCV这么简单为啥不学--1.4.基础标识绘制(绘制线line函数.rectangle函数绘制四边形.circle函数绘制圆形.putText函数绘制文字.putText绘制中文文字) 目录 O ...

  7. 在图片UIImage上绘制文字(字符串文字转图片)

    很多时候我们需要在一张背景图上面绘制文字并且重新生成一张带有绘制好文字的图片,一开始我使用的是我上篇博客中提到的先自定义一个UIView然后再UIView上面绘制文字,绘制完成之后再通过将UIView ...

  8. 十二、linux GPIO初始化

    一.如何查看LINUX内核 很多人说学习linux最好的方法是看内核源码,那怎么看呢?总不能通篇看吧,那猴年马月都看不完.现在我就教大家一个办法(以GPIO为例): 在内核源码目录下使用命令" ...

  9. canvas绘制图片二维码+文字+背景 下载到本地

    之前写过下载二维码的需求,需求简单,只要能下载就行,但是下载到本地就一个纯二维码的小图片,感觉不怎么美观. 闲来无事,以下自己写了个小demo,丰富canvas下载到本地的图片内容,可以添加照片,描述 ...

  10. [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. Java企业实训 - 01 - Java前奏
  2. 试用版office 2010中提示Error opening SocialConnectorRes.dll求解!!
  3. SIFT四部曲之——构建关键点特征描述符
  4. bootstraptable 分页循环_关于bootstrap-table服务端分页问题
  5. 【Opencv-Ubuntu】论clone对Mat的重要性
  6. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命
  7. 从零开始学习Docker
  8. 京东公布618第一小时战报:成交金额同比增长65%
  9. ERC20合约标准详解分析
  10. OAuth2.0(基于django2.1.2实现版本)
  11. 报表性能优化方案之多数据集实现层式报表
  12. 操作系统总结(大全)
  13. 虚拟机复制镜像操作方法
  14. storyboard(故事版)新手教程 图文详解 2.为无约束的故事版添加约束
  15. echarts首次加载不显示,再次刷新照常显示
  16. CVPR 2022 | Accuracy和F1-score真的能代表车道线检测网络性能吗?
  17. Linux权限委派(生产环境必备)
  18. 本科计算机er想做AI方向的科研,要怎么准备?
  19. Poly-encoders(2020 ICLR)
  20. android 边距 百分比,Android百分比布局:PercentRelativeLayout

热门文章

  1. wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
  2. mysql 完整性的概念_MySQL中一些深入概念整理
  3. 计算机应用基础论坛发帖,计算机应用基础串讲冲刺讲义(一)_IT教育论坛_计算机学习论坛_学赛网_IT在线教育平台...
  4. java 中使用_java中运算符的使用方法
  5. 怎么恢复初始状态_妊娠纹怎么消 这三种美食帮你去除妊娠纹
  6. windows .ssh文件位置 hosts位置
  7. logback介绍和配置详解
  8. java中的http请求的封装(GET、POST、form表单形式)
  9. django-salmonella的使用
  10. Oracle刷建表语句