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在图片上绘制文字的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值