Android 使用Canvas在图片上绘制文字的方法

Android 使用Canvas在图片上绘制文字的方法,第1张

概述【Android】Android中Paint字体、粗细等属性的一些设置在AndroidSDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体:

【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型,如12mp.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,photo.getWIDth(),photo.getHeight());// 创建一个指定的新矩形的坐标   Rect dst = new Rect(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编程之绘图canvas基本用法示例Android中Canvas的常用方法总结Android canvas drawBitmap方法详解及实例Android中Paint类和Canvas类的方法汇总 总结

以上是内存溢出为你收集整理的Android 使用Canvas在图片上绘制文字的方法全部内容,希望文章能够帮你解决Android 使用Canvas在图片上绘制文字的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1143060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存