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 文字对齐方式相关推荐

  1. PyQt5 QPushButton 设置文字对齐方式(基于setStyleSheet)

    PyQt5 QPushButton 设置文字对齐方式(基于setStyleSheet) 创建一个QPushButton(文本默认居中对齐) import sys from PyQt5.QtWidget ...

  2. AUTOCAD——调整十字光标、CAD表格文字对齐方式

    CAD如何调整十字光标? 执行方式 1.输入自定义设置命令"OPTIONS"(快捷键:OP),按下空格键. 自定义设置 2.在弹出的选项界面中,打开显示页面,选择页面中的" ...

  3. VBA- 设置指定列的文字对齐方式(遍历指定列,获取最后一行非空单元格行号)

    Sub isColInfo(sheet As Worksheet)Dim LastRow As IntegerDim arrCol As VariantarrCol = Array("C&q ...

  4. 第2章第22节:文字对齐:常用的文字对齐方式 [PowerPoint精美幻灯片实战教程]

    本节演示常见的文字对齐方式,首先选择需要操作的文字. 点击文字居中图标,可以将所选文字居中对齐. 接着选择另一组文字. 点击文字居中图标,将所选文字居中对齐. 继续选择第三组文字. 点击文本两端对齐图 ...

  5. JXL导出EXCEL合并单元格、文字对齐方式 .

    public void createNoLotteryAlarmExcel(String filePath,String fileName,List<NoLotteryAlarm> ala ...

  6. JXL导出EXCEL合并单元格、文字对齐方式

    这次能做出来,主要是感谢各位在网上提供的资料,在此记录 导出的结果是,大家看哈,若有可取之处可继续 代码比较多,大家主要看哈我用红色标注部分即可 --------------------------- ...

  7. wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...

    今天,无意之间看都到一个同事还在用空间键对齐文字,顿时我惊讶到了,这都什么年头呀,还在用这样方式进行对齐,哎,真是无药可救了. 看好了,今天小编让你摆脱文字对齐烦恼,让你的效率也能够提升起来. 1.调 ...

  8. C# CAD 开发单行文字对齐方式详解

    本人录制c#CAD二次开发视频 基础入门全套,感兴趣可以点击下面链接 https://i.xue.taobao.com/detail.htm?spm=a2174.7765247.0.0.6EmxKK& ...

  9. 修改文字对齐方式,居中改为底部对齐

    被提了无关紧要的问题,尤其是那种小的不能再小的问题.改起来还要费个牛劲! 接了个活,功能开发完了,结果要求改下对齐方式.文字居中改为底部对齐. 原本是这样的: 图不清晰,凑合看. 要改为: ..... ...

最新文章

  1. 目标检测-- DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling
  2. 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
  3. Docker 配置固定IP及桥接的实现方法(转载)
  4. java toolkit invoker_有没有哪位老哥愿意帮一下新人啊
  5. linux 64位兼容32位,linux的64位操作系统对32位程序的兼容-全面分析
  6. laravel大型项目系列教程(四)之显示文章列表和用户修改文章
  7. redis序列化_scrapy_redis中序列化源码及其在程序设计中的应用
  8. c语言指针详解(概念示例)
  9. MySQL主从复制故障解决
  10. 【Envi风暴】ENVI中求两幅遥感影像的相关性(相关系数)
  11. 巨星陨落,一个月内已有6位
  12. abap 创建出口历程_SAP ABAP第一,两,三代出口型BADI实现 解释的概念
  13. 用Docker容器自带的tensorflow serving部署模型对外服务(成功率100%)
  14. 1384. 按年度列出销售总额
  15. 祝酷狗猴年快乐,网易云称其耍猴
  16. 生日悖论分析python_Python数据分析养成记4——预测泰坦尼克号生存概率
  17. ios微信组件跳转_在iOS9中突破微信App跳转的限制
  18. html账号输入框整体透明,HTML在透明输入框里添加图标的实现代码
  19. 建网站论坛需要多大服务器,论坛搭建如何选择服务器
  20. GRE新东方推荐学习方法(2010年左右)

热门文章

  1. 下着雨的星期天下午,年素清一个人走在外面
  2. python3d_Power BI将超越python和D3,成为数据可视化的福音、定性数据分析的未来?...
  3. 一个拥抱ARVR热点机会
  4. 2019HDU多校第一场1001 BLANK (DP)(HDU6578)
  5. 阿里2021年面经汇总
  6. 服务器CPU占用过高如何解决
  7. 三维场景中创建镜面反射效果(three.js实战9)
  8. linux io apic,linux-kernel – IO-APIC级别与PCI-MSI-X之间的差异
  9. Centos配置NFS
  10. Couldn‘t flush user prefs: java.util.prefs.BackingStoreException: Couldn‘t get file lock