Android 使用Canvas在图片上绘制文字的方法
【Android】Android中Paint字体、粗细等属性的一些设置
在AndroidSDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体:
Paintmp=newpaint(); mp.setTypeface(Typeface.DEFAULT_BOLD)
常用的字体类型名称还有:
*Typeface.DEFAULT//常规字体类型
*Typeface.DEFAULT_BOLD//黑体字体类型
*Typeface.MONOSPACE//等宽字体类型
*Typeface.SANS_SERIF//sansserif字体类型
*Typeface.SERIF//serif字体类型
除了字体类型设置之外,还可以为字体类型设置字体风格,如设置粗体:
Paintmp=newPaint(); Typefacefont=Typeface.create(Typeface.SANS_SERIF,Typeface.BOLD); p.setTypeface(font);
常用的字体风格名称还有:
*Typeface.BOLD//粗体
*Typeface.BOLD_ITALIC//粗斜体
*Typeface.ITALIC//斜体
*Typeface.NORMAL//常规
但是有时上面那些设置在绘图过程中是不起作用的,所以还有如下设置方式:
Paintmp=newPaint(); 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)来实现,尽管效果看起来不是很实在(字体中空效果)。实际发现,最后绘制的效果与手机硬件也有些关系,比如前面的绘图测试程序.
一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小
privatevoiddrawNewBitmap(ImageViewimageView,Stringstr){
Bitmapphoto=BitmapFactory.decodeResource(this.getResources(),R.drawable.background);
intwidth=photo.getWidth();
inthight=photo.getHeight();
//建立一个空的Bitmap
Bitmapicon=Bitmap.createBitmap(width,hight,Bitmap.Config.ARGB_8888);
//初始化画布绘制的图像到icon上
Canvascanvas=newCanvas(icon);
//建立画笔
PaintphotoPaint=newPaint();
//获取更清晰的图像采样,防抖动
photoPaint.setDither(true);
//过滤一下,抗剧齿
photoPaint.setFilterBitmap(true);
Rectsrc=newRect(0,0,photo.getWidth(),photo.getHeight());//创建一个指定的新矩形的坐标
Rectdst=newRect(0,0,width,hight);//创建一个指定的新矩形的坐标
canvas.drawBitmap(photo,src,dst,photoPaint);//将photo缩放或则扩大到dst使用的填充区photoPaint
//自定义的画笔
TextPainttextPaint=myTextPaint();
drawText(canvas,textPaint,str,45,hight/5,width);
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
imageView.setImageBitmap(icon);
saveMyBitmap(this,icon);
}
//设置画笔的字体和颜色
publicTextPaintmyTextPaint(){
TextPainttextPaint=newTextPaint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);//设置画笔
intTEXT_SIZE=Math.round(25*getRATIO());
textPaint.setTextSize(TEXT_SIZE);//字体大小
textPaint.setTypeface(Typeface.DEFAULT_BOLD);//采用默认的宽度
textPaint.setColor(Color.argb(255,94,38,18));//采用的颜色
returntextPaint;
//写入文字,自动换行的方法
publicvoiddrawText(Canvascanvas,TextPaintPaint,StringtextString,intx,inty,intwidth){
//intWidth=Math.round(width*getRATIO());
intstart_x=Math.round(x*getRATIO());
intstart_y=Math.round(y*getRATIO());
StaticLayoutstaticLayout=newStaticLayout(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在图片上绘制文字的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。