android 在图上绘制字符串,Android 使用Canvas在图片上绘制文字的方法
【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在图片上绘制文字的方法相关推荐
- 使用canvas在图片上画圆圈,并可点击圆圈在圆圈下方画垂直线(适配移动端)
一.UI 二.实现 <div class="carBrightSpot"><!-- 轮播图 --><div class="block-swi ...
- 文件上传、下载、导出(图片上传、下载)
一.文件上传 1.常规文件上传 input 标签 type="file", 点击接收上传的文件 <label for="file_url">< ...
- java多文件上传plupload控件实现多图片上传(二)
接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...
- html5在图片中加链接,JavaScript、html5、canvas实现图片上画超链接
本文主要为大家详细介绍了JavaScript html5 canvas实现图片上画超链接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 1. html 2. javascrip ...
- canvas在图片上绘制标记,可拖拽、缩放,基于ZRender
如下图所示,在图片上做标记,如圆形.矩形等. 该demo实现画布在页面布局中缩放后居中显示,可拖拽.缩放.做标记说明. 项目下载地址:https://gitlab.com/zhangcw66/draw ...
- canvas在图片上绘制图形
说明 在vue项目中,后台返回图片的url和矩形的顶点坐标(左上和右下),需要在图片上绘制矩形框,并在前端进行展示(一张张的播放图片). 其中返回的数据是多张图片的集合,前端也需要整合一个绘制后的图片 ...
- php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传
一.创建上传方法 public function uploadimg() { $image = $_FILES['file']; $filebase = file_get_contents($imag ...
- php模板多图上传插件,PHP+jQuery+Ajax多图片上传插件
注:本地预览无效,需要在服务断运行 使用方法 HTML 首先我们在页面上放置个上传按钮,使用POST提交到ajax.php.#ul_pics 用来显示上传完毕后的图片.关于按钮.进度条.图片垂直居中样 ...
- ueditor 上传路径 Php_v9切换ueditor后图片上传路径问题 改成绝对路径
使用V9切换成ueditor编辑器后,图片上传路径显示的是相对路径,同时会把content字段第一张图这个路径同步到缩略图的thumb字段.thumb字段如果是相对路径的话,前端就不能进行裁剪,APP ...
- vue如何实现在页面上画画_vue组件:canvas实现图片涂鸦功能
方案背景 需求 需要对图片进行标注,导出图片. 需要标注N多图片最后同时保存. 需要根据多边形区域数据(区域.颜色.名称)标注. 对应方案 用canvas实现涂鸦.圆形.矩形的绘制,最终生成图片bas ...
最新文章
- [译] Facebook杯2013年编程挑战赛——第一轮题目及答案
- java计算加减表达式_【Java】计算加减乘除数学公式(简单计算器)含小数
- 【原理图操作】原理图更新PCB时未改动元器件布局变动问题?
- IdentityServer4(六)授权码流程原理之SPA
- c ++ stl_通过分配另一个列表的所有元素来创建列表| C ++ STL
- okhttp3 模拟get、post(json参数传递,form表单提交)
- 怎么修改php.in的时间,PHP时间和日期函数怎么操作
- 小数加分数怎样计算讲解_反渗透阻垢剂的加药量怎样计算?
- ifttt.com:让你的网络行为能引发连锁反应
- [Java2入门经典]第9章 访问文件和目录
- Python UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 解决方法
- 全面解决交通难题,智慧大脑助力城市创建智慧交通管理体系
- ASP.NET 安全认证(二)【转】
- 真正的高手,都懂得构建自己的知识体系
- 科大星云诗社动态20210513
- Poj P3889 Fractal Streets___规律+dfs+分治
- 网页收藏栏小图标_如何设置在网页地址栏中的小图标
- ubuntu16.04无法进入图形桌面
- 安卓应用开发小程序!字节跳动+京东+360+网易面试题整理,聪明人已经收藏了!
- photoshop2019教程基础