Canvas 文字对齐方式
Canvas 文字对齐方式
常用的画文字的方法
public void drawText (String text, float x, float y, Paint paint)
x,y 并不是指定文字的中点位置,并且x,y与文字对齐方式有关(通过setTextAlign()指定,默认为left)
测试
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;/*** Created by talon on 2021/3/10* note: 根据对象绘制图片* 参考:https://www.jianshu.com/p/8b97627b21c4*/
public class DrawBitmapManager4 {private final String TAG = "DrawImageManager";public static Bitmap createBitmap() {// 创建一个画布Bitmap bitmap = Bitmap.createBitmap(800, 1000, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);canvas.drawBitmap(bitmap, 0, 0, null);// 给画布加个边框Rect rect = new Rect(0, 0, canvas.getWidth(), canvas.getHeight());Paint paint = new Paint();paint.setColor(Color.BLACK);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(2);canvas.drawRect(rect, paint);// 开始测试数据// todo 证明: setStrokeWidth这个方法,并不是往canvas内侧填充,而是往外侧增加一半,往内侧增加一半。
// testStrokeWidth(canvas);// todo 证明:文字居中方案setTextCenter(canvas); // 居中setTextLeft(canvas); // 左对齐setTextRight(canvas); // 右对齐return bitmap;}private static void testStrokeWidth(Canvas canvas) {// 划粗400px的线,只填充了200pxPaint paint = new Paint();paint.setColor(Color.BLACK);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(400);canvas.drawLine(0, 0, 0, canvas.getHeight(), paint);// 划线paint.setColor(Color.RED);paint.setStrokeWidth(5);canvas.drawLine(210, 0, 210, canvas.getHeight(), paint);}private static void setTextCenter(Canvas canvas) {//矩形背景Paint bgRect = new Paint();bgRect.setStyle(Paint.Style.FILL);bgRect.setColor(Color.TRANSPARENT);RectF rectF = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());canvas.drawRect(rectF, bgRect);Paint textPaint = new Paint();textPaint.setStyle(Paint.Style.FILL);textPaint.setTextSize(100);textPaint.setTextAlign(Paint.Align.CENTER);String text = "测Zz试";//计算baseline ;Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();float distance = (fontMetrics.bottom - fontMetrics.top) / 2 - fontMetrics.bottom;float baseline = rectF.centerY() + distance;canvas.drawText(text, rectF.centerX(), baseline, textPaint);// 划线标记中间位置textPaint.setColor(Color.RED);textPaint.setStrokeWidth(5);canvas.drawLine(0, canvas.getHeight() / 2, canvas.getWidth(), canvas.getHeight() / 2, textPaint);}private static void setTextLeft(Canvas canvas) {//矩形背景Paint bgRect = new Paint();bgRect.setStyle(Paint.Style.FILL);bgRect.setColor(Color.TRANSPARENT);RectF rectF = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());canvas.drawRect(rectF, bgRect);Paint textPaint = new Paint();textPaint.setStyle(Paint.Style.FILL);textPaint.setTextSize(100);textPaint.setTextAlign(Paint.Align.LEFT);String text = "测Zz试";//计算baseline ;Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();float distance = (fontMetrics.bottom - fontMetrics.top) / 2 - fontMetrics.bottom;float baseline = rectF.centerY() + distance;canvas.drawText(text, rectF.left, baseline, textPaint);// 划线标记中间位置textPaint.setColor(Color.RED);textPaint.setStrokeWidth(5);canvas.drawLine(0, canvas.getHeight() / 2, canvas.getWidth(), canvas.getHeight() / 2, textPaint);}private static void setTextRight(Canvas canvas) {//矩形背景Paint bgRect = new Paint();bgRect.setStyle(Paint.Style.FILL);bgRect.setColor(Color.TRANSPARENT);RectF rectF = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());canvas.drawRect(rectF, bgRect);Paint textPaint = new Paint();textPaint.setStyle(Paint.Style.FILL);textPaint.setTextSize(100);textPaint.setTextAlign(Paint.Align.RIGHT);String text = "测Zz试";//计算baseline ;Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();float distance = (fontMetrics.bottom - fontMetrics.top) / 2 - fontMetrics.bottom;float baseline = rectF.centerY() + distance;canvas.drawText(text, rectF.right, baseline, textPaint);// 划线标记中间位置textPaint.setColor(Color.RED);textPaint.setStrokeWidth(5);canvas.drawLine(0, canvas.getHeight() / 2, canvas.getWidth(), canvas.getHeight() / 2, textPaint);}
}
Canvas 文字对齐方式相关推荐
- PyQt5 QPushButton 设置文字对齐方式(基于setStyleSheet)
PyQt5 QPushButton 设置文字对齐方式(基于setStyleSheet) 创建一个QPushButton(文本默认居中对齐) import sys from PyQt5.QtWidget ...
- AUTOCAD——调整十字光标、CAD表格文字对齐方式
CAD如何调整十字光标? 执行方式 1.输入自定义设置命令"OPTIONS"(快捷键:OP),按下空格键. 自定义设置 2.在弹出的选项界面中,打开显示页面,选择页面中的" ...
- VBA- 设置指定列的文字对齐方式(遍历指定列,获取最后一行非空单元格行号)
Sub isColInfo(sheet As Worksheet)Dim LastRow As IntegerDim arrCol As VariantarrCol = Array("C&q ...
- 第2章第22节:文字对齐:常用的文字对齐方式 [PowerPoint精美幻灯片实战教程]
本节演示常见的文字对齐方式,首先选择需要操作的文字. 点击文字居中图标,可以将所选文字居中对齐. 接着选择另一组文字. 点击文字居中图标,将所选文字居中对齐. 继续选择第三组文字. 点击文本两端对齐图 ...
- JXL导出EXCEL合并单元格、文字对齐方式 .
public void createNoLotteryAlarmExcel(String filePath,String fileName,List<NoLotteryAlarm> ala ...
- JXL导出EXCEL合并单元格、文字对齐方式
这次能做出来,主要是感谢各位在网上提供的资料,在此记录 导出的结果是,大家看哈,若有可取之处可继续 代码比较多,大家主要看哈我用红色标注部分即可 --------------------------- ...
- wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...
今天,无意之间看都到一个同事还在用空间键对齐文字,顿时我惊讶到了,这都什么年头呀,还在用这样方式进行对齐,哎,真是无药可救了. 看好了,今天小编让你摆脱文字对齐烦恼,让你的效率也能够提升起来. 1.调 ...
- C# CAD 开发单行文字对齐方式详解
本人录制c#CAD二次开发视频 基础入门全套,感兴趣可以点击下面链接 https://i.xue.taobao.com/detail.htm?spm=a2174.7765247.0.0.6EmxKK& ...
- 修改文字对齐方式,居中改为底部对齐
被提了无关紧要的问题,尤其是那种小的不能再小的问题.改起来还要费个牛劲! 接了个活,功能开发完了,结果要求改下对齐方式.文字居中改为底部对齐. 原本是这样的: 图不清晰,凑合看. 要改为: ..... ...
最新文章
- 目标检测-- DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- Docker 配置固定IP及桥接的实现方法(转载)
- java toolkit invoker_有没有哪位老哥愿意帮一下新人啊
- linux 64位兼容32位,linux的64位操作系统对32位程序的兼容-全面分析
- laravel大型项目系列教程(四)之显示文章列表和用户修改文章
- redis序列化_scrapy_redis中序列化源码及其在程序设计中的应用
- c语言指针详解(概念示例)
- MySQL主从复制故障解决
- 【Envi风暴】ENVI中求两幅遥感影像的相关性(相关系数)
- 巨星陨落,一个月内已有6位
- abap 创建出口历程_SAP ABAP第一,两,三代出口型BADI实现 解释的概念
- 用Docker容器自带的tensorflow serving部署模型对外服务(成功率100%)
- 1384. 按年度列出销售总额
- 祝酷狗猴年快乐,网易云称其耍猴
- 生日悖论分析python_Python数据分析养成记4——预测泰坦尼克号生存概率
- ios微信组件跳转_在iOS9中突破微信App跳转的限制
- html账号输入框整体透明,HTML在透明输入框里添加图标的实现代码
- 建网站论坛需要多大服务器,论坛搭建如何选择服务器
- GRE新东方推荐学习方法(2010年左右)
热门文章
- 下着雨的星期天下午,年素清一个人走在外面
- python3d_Power BI将超越python和D3,成为数据可视化的福音、定性数据分析的未来?...
- 一个拥抱ARVR热点机会
- 2019HDU多校第一场1001 BLANK (DP)(HDU6578)
- 阿里2021年面经汇总
- 服务器CPU占用过高如何解决
- 三维场景中创建镜面反射效果(three.js实战9)
- linux io apic,linux-kernel – IO-APIC级别与PCI-MSI-X之间的差异
- Centos配置NFS
- Couldn‘t flush user prefs: java.util.prefs.BackingStoreException: Couldn‘t get file lock