`

ChartDirectorvk如何测试文本的长度跟宽度

 
阅读更多
在使用charDirector画图时, 要确定setPlotArea的位置. setPlotArea方法的参数如下.

public PlotArea setPlotArea(int x, int y, int width, int height [, int bgColor [, int altBgColor [, int edgeColor [, int hGridColor [, int vGridColor ]]]]])

其中参数解释如下:
x The x coordinate of the left of the plot area.
y The y coordinate of the top of the plot area.
width The width of the plot area in pixels.
height The height of the plot area in pixels.


因为画图的时候, y轴的值有大有小, 所以我们不能固定一个值. 应该要根据y轴值的最长宽度的计算出点的位置.

找了一下, 在chartDirtect中, 可以使用以下代码计算文本的宽度和高度:
//这里得到一个TTFText文本对象
TTFText testTTF = c.getDrawArea().text3(ylabelStr[0], 字体名称, 字体大小);
int plotLeft = testTTF.getWidth() + 5; //计算出最宽的
int plotWith = picWith - plotLeft - plotRight; //画图的宽度
int plotTop = testTTF.getHeight();
plotHeight = picHeiht - plotTop - plotBottom; //画图的高度


其实, 它的原理跟java.awt.FontMetrics很类似的.
关于java.awt.FontMetrics请参考:

androd之绘制文本
JAVA:图形之利用FontMetrics类居中

附上个关于java里font的图解

FontMetrics对象
它以四个基本坐标为基准,分别为:
・FontMetrics.top
・FontMetrics.ascent
・FontMetrics.descent
・FontMetrics.bottom

该图片将如下

Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);
textPaint.setTextSize( 35);
textPaint.setColor( Color.WHITE);

// FontMetrics对象
FontMetrics fontMetrics = textPaint.getFontMetrics();

String text = "abcdefghijklmnopqrstu";

// 计算每一个坐标
float baseX = 0;
float baseY = 100;
float topY = baseY + fontMetrics.top;
float ascentY = baseY + fontMetrics.ascent;
float descentY = baseY + fontMetrics.descent;
float bottomY = baseY + fontMetrics.bottom;

// 绘制文本
canvas.drawText( text, baseX, baseY, textPaint);

// BaseLine描画
Paint baseLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);>
baseLinePaint.setColor( Color.RED);
canvas.drawLine(0, baseY, getWidth(), baseY, baseLinePaint);

// Base描画
canvas.drawCircle( baseX, baseY, 5, baseLinePaint);

// TopLine描画
Paint topLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
topLinePaint.setColor( Color.LTGRAY);
canvas.drawLine(0, topY, getWidth(), topY, topLinePaint);

// AscentLine描画
Paint ascentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
ascentLinePaint.setColor( Color.GREEN);
canvas.drawLine(0, ascentY, getWidth(), ascentY, ascentLinePaint);

// DescentLine描画
Paint descentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
descentLinePaint.setColor( Color.YELLOW);
canvas.drawLine(0, descentY, getWidth(), descentY, descentLinePaint);

// ButtomLine描画
Paint bottomLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
bottomLinePaint.setColor( Color.MAGENTA);
canvas.drawLine(0, bottomY, getWidth(), bottomY, bottomLinePaint);
分享到:
评论

相关推荐

    声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)

    声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+文档说明(高分项目)声发射定位算法 Matlab 仿真项目源码+

    Monkey测试,推包文件

    monkey测试,推包文件

    【中科院1区】Matlab实现向量加权平均算法INFO-RF锂电池健康状态估计算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【源码+数据库脚本+项目讲解】基于JavaWeb+mysql实现的企业电子商城

    一、项目简介 本项目是一套基于JavaWeb电子商城,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值 二、技术实现 jsp+servlet+mysql 三、开发运行环境 jdk1.8 Tomcat8及其以上版本 Mysql5.5及以上版本 四、系统功能 首页 销售排行 新品上架 特价商品 查看订单 购物车 会员修改 加入购物车 继续购物 去收银台结账 清空购物车 修改数量等功能 详情 https://blog.csdn.net/weixin_43860634/article/details/130983090

    计算机图形学之动画和模拟算法:CrowdSimulation:碰撞检测与响应.docx

    计算机图形学之动画和模拟算法:CrowdSimulation:碰撞检测与响应.docx

    LOL v2数据集,train和test

    LOL v2数据集,train和test

    logistic regression.ipynb

    logistic regression.ipynb

    暴风电视刷机数据 55R5 屏LC550EGY-SJM2 机编60000AM0S00 屏参30173304 V4.0.32版本

    2G+16G主程序物料号11173101 AML-962H机芯升级步骤 本地升级: 1、将2G+xG_update.zip重命名update.zip,拷贝至U盘,插入电视USB,打开电视进入设置 2、选择本地升级,升级完毕后电视会重启,操作过程中切勿断电关机 升级完成后可以在系统设置——本机信息——查询软件版本 强制升级: 1、解压强制升级脚本recovery.img与factory_update_param.aml,加上update.zip三个文件拷贝至U盘根目录,插入电视USB 2、插拔下电源,按遥控器待机键后快速不停点按遥控器右键5-10下触发主板识别U盘软件进行升级 3、升级完毕后电视会重启,操作过程中切勿断电关机 串口升级 1、将三个升级软件拷贝至U盘根目录下,然后插入电视的USB接口 2、电视开启的时候按住电脑键盘Enter回车键出现txl_p392_v1#时,输入run update敲回车,系统识别U盘软件进行升级 如未成功先确认输入指令是否正常,reboot重新启动再试 若还是无法升级可能是硬件存储系统的EMMC模块损坏,请更换主板

    用于Excel下载测试

    用于Excel下载测试

    基于C++实现数字图像处理和深度学习的车牌定位,字符分割和字符识别项目,包含项目收集数据集和cnn模型(含源码+论文)

    【作品名称】:基于C++实现数字图像处理和深度学习的车牌定位,字符分割和字符识别项目,包含项目收集数据集和cnn模型(含源码+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 该项目以数字图像处理和机器学习为基础,以1485张图片组成的原始数据集为出发点,研究了如何从原始图片集中得到用于分类器训练的数据集;针对车牌区域特点和输入图片的全局特点,提出了四种不同的可能的车牌区域提取方法,经过校正后得到车牌区域候选人;参考自然场景下的文本检测方法和车牌中的字符分布特点,对车牌候选区域提取改进的最大稳定极值区域,通过使用非极大值抑制和区域校正得到字符候选人,通过字符判断分类器和字符搜索,实现非车牌区域的滤除和车牌区域7个字符的提取,其中字符判断使用基于20个描述性特征的支持向量机实现;通过使用金字塔梯度方向直方图特征得到了用于 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    包括了全部的资源文(图标ico)和源代码

    包括了全部的资源文(图标ico)和源代码

    机器学习20241106-5

    机器学习20241106-5

    【java毕业设计】医患档案管理系统源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

    DIYUSB接口写频线的详细步骤

    有图有真相

    Matlab实现侏儒猫鼬优化算法DMO-Kmean-Transformer-BiLSTM组合状态识别算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    【java毕业设计】社区维修平台源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

    【java毕业设计】学生综合成绩测评系统源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

    springboot253基于Springboot+Vue社区养老服务系统-毕业源码案例设计.zip

    springboot253基于Springboot+Vue社区养老服务系统-毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线

    【作品名称】:飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:飞思卡尔智能车平台,CNN识别道路图像类型,图像处理计算轨迹线 飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线 飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    【光伏预测】基于沙猫群优化算法SCSO优化高斯过程回归GPR实现光伏多输入单输出预测附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

Global site tag (gtag.js) - Google Analytics