【Android】Android中 Paint 字体、粗细等属性的一些设置

在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体:

Paint mp = new paint();

mp.setTypeface(Typeface.DEFAULT_BOLD)

常用的字体类型名称还有:

* Typeface.DEFAULT //常规字体类型

* Typeface.DEFAULT_BOLD //黑体字体类型

* Typeface.MONOSPACE //等宽字体类型

* Typeface.SANS_SERIF //sans serif字体类型

* Typeface.SERIF //serif字体类型

除了字体类型设置之外,还可以为字体类型设置字体风格,如设置粗体:

Paint mp = new Paint();

Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);

p.setTypeface( font );

常用的字体风格名称还有:

* Typeface.BOLD //粗体

* Typeface.BOLD_ITALIC //粗斜体

* Typeface.ITALIC //斜体

* Typeface.NORMAL //常规

但是有时上面那些设置在绘图过程中是不起作用的,所以还有如下设置方式:

Paint mp = new Paint();

mp.setFakeBoldText(true); //true为粗体,false为非粗体

mp.setTextSkewX(-0.5f); //float类型参数,负数表示右斜,整数左斜

mp.setUnderlineText(true); //true为下划线,false为非下划线

mp.setStrikeThruText(true); //true为删除线,false为非删除线

Paint常用的方法还有:

mp.setTextSize(); //设置字体大小,int型,如12

mp.setStrokeWidth(w); //设置线宽,float型,如2.5f,默认绘文本无需设置(默认值好像为0),但假如设置了,再绘制文本的时候一定要恢复到0

说明:对于中文粗体的设置,好像只能通过setFakeBoldText(true)来实现,尽管效果看起来不是很实在(字体中空效果)。实际发现,最后绘制的效果与手机硬件也有些关系,比如前面的绘图测试程序.

一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小

private void drawNewBitmap(ImageView imageView, String str) {

Bitmap photo = BitmapFactory.decodeResource(this.getResources(), R.drawable.background);

int width = photo.getWidth();

int hight = photo.getHeight();

//建立一个空的Bitmap

Bitmap icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888);

// 初始化画布绘制的图像到icon上

Canvas canvas = new Canvas(icon);

// 建立画笔

Paint photoPaint = new Paint();

// 获取更清晰的图像采样,防抖动

photoPaint.setDither(true);

// 过滤一下,抗剧齿

photoPaint.setFilterBitmap(true);

Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());// 创建一个指定的新矩形的坐标

Rect dst = new Rect(0, 0, width, hight);// 创建一个指定的新矩形的坐标

canvas.drawBitmap(photo, src, dst, photoPaint);// 将photo 缩放或则扩大到dst使用的填充区photoPaint

//自定义的画笔

TextPaint textPaint=myTextPaint();

drawText(canvas,textPaint,str,45,hight/5,width);

canvas.save(Canvas.ALL_SAVE_FLAG);

canvas.restore();

imageView.setImageBitmap(icon);

saveMyBitmap(this,icon);

}

//设置画笔的字体和颜色

public TextPaint myTextPaint(){

TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);// 设置画笔

int TEXT_SIZE = Math.round(25 * getRATIO());

textPaint.setTextSize(TEXT_SIZE);// 字体大小

textPaint.setTypeface(Typeface.DEFAULT_BOLD);// 采用默认的宽度

textPaint.setColor(Color.argb(255,94,38,18));// 采用的颜色

return textPaint;

//写入文字,自动换行的方法

public void drawText(Canvas canvas, TextPaint Paint,String textString,int x,int y,int width) {

//int Width=Math.round(width* getRATIO());

int start_x=Math.round(x * getRATIO());

int start_y=Math.round(y * getRATIO());

StaticLayout staticLayout=new StaticLayout(textString, Paint, width-start_x*2,

Alignment.ALIGN_NORMAL, 1.5f, 0.0f, false);

//绘制的位置

canvas.translate(start_x, start_y);

staticLayout.draw(canvas);

}

以上这篇Android 使用Canvas在图片上绘制文字的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

android 在图上绘制字符串,Android 使用Canvas在图片上绘制文字的方法相关推荐

  1. 使用canvas在图片上画圆圈,并可点击圆圈在圆圈下方画垂直线(适配移动端)

    一.UI 二.实现 <div class="carBrightSpot"><!-- 轮播图 --><div class="block-swi ...

  2. 文件上传、下载、导出(图片上传、下载)

    一.文件上传 1.常规文件上传 input 标签 type="file", 点击接收上传的文件 <label for="file_url">< ...

  3. java多文件上传plupload控件实现多图片上传(二)

    接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...

  4. html5在图片中加链接,JavaScript、html5、canvas实现图片上画超链接

    本文主要为大家详细介绍了JavaScript html5 canvas实现图片上画超链接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 1. html 2. javascrip ...

  5. canvas在图片上绘制标记,可拖拽、缩放,基于ZRender

    如下图所示,在图片上做标记,如圆形.矩形等. 该demo实现画布在页面布局中缩放后居中显示,可拖拽.缩放.做标记说明. 项目下载地址:https://gitlab.com/zhangcw66/draw ...

  6. canvas在图片上绘制图形

    说明 在vue项目中,后台返回图片的url和矩形的顶点坐标(左上和右下),需要在图片上绘制矩形框,并在前端进行展示(一张张的播放图片). 其中返回的数据是多张图片的集合,前端也需要整合一个绘制后的图片 ...

  7. php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传

    一.创建上传方法 public function uploadimg() { $image = $_FILES['file']; $filebase = file_get_contents($imag ...

  8. php模板多图上传插件,PHP+jQuery+Ajax多图片上传插件

    注:本地预览无效,需要在服务断运行 使用方法 HTML 首先我们在页面上放置个上传按钮,使用POST提交到ajax.php.#ul_pics 用来显示上传完毕后的图片.关于按钮.进度条.图片垂直居中样 ...

  9. ueditor 上传路径 Php_v9切换ueditor后图片上传路径问题 改成绝对路径

    使用V9切换成ueditor编辑器后,图片上传路径显示的是相对路径,同时会把content字段第一张图这个路径同步到缩略图的thumb字段.thumb字段如果是相对路径的话,前端就不能进行裁剪,APP ...

  10. vue如何实现在页面上画画_vue组件:canvas实现图片涂鸦功能

    方案背景 需求 需要对图片进行标注,导出图片. 需要标注N多图片最后同时保存. 需要根据多边形区域数据(区域.颜色.名称)标注. 对应方案 用canvas实现涂鸦.圆形.矩形的绘制,最终生成图片bas ...

最新文章

  1. [译] Facebook杯2013年编程挑战赛——第一轮题目及答案
  2. java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
  3. 【原理图操作】原理图更新PCB时未改动元器件布局变动问题?
  4. IdentityServer4(六)授权码流程原理之SPA
  5. c ++ stl_通过分配另一个列表的所有元素来创建列表| C ++ STL
  6. okhttp3 模拟get、post(json参数传递,form表单提交)
  7. 怎么修改php.in的时间,PHP时间和日期函数怎么操作
  8. 小数加分数怎样计算讲解_反渗透阻垢剂的加药量怎样计算?
  9. ifttt.com:让你的网络行为能引发连锁反应
  10. [Java2入门经典]第9章 访问文件和目录
  11. Python UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 解决方法
  12. 全面解决交通难题,智慧大脑助力城市创建智慧交通管理体系
  13. ASP.NET 安全认证(二)【转】
  14. 真正的高手,都懂得构建自己的知识体系
  15. 科大星云诗社动态20210513
  16. Poj P3889 Fractal Streets___规律+dfs+分治
  17. 网页收藏栏小图标_如何设置在网页地址栏中的小图标
  18. ubuntu16.04无法进入图形桌面
  19. 安卓应用开发小程序!字节跳动+京东+360+网易面试题整理,聪明人已经收藏了!
  20. photoshop2019教程基础

热门文章

  1. ORA-01075: you are currently logged on
  2. LINUX进程内存占用查看
  3. 24.事务控制和锁定语句
  4. 5. MVC,MVP 和 MVVM
  5. mktime()的格式
  6. css中visibility与display的区别
  7. alpha冲刺-事后诸葛亮
  8. 知物由学 | 如何应对日益强大的零日攻击
  9. bzoj 1014: 洛谷 P4036: [JSOI2008]火星人
  10. mysql的三种安装方式