国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 使用Canvas在圖片上繪制文字的方法

2019-12-12 01:15:35
字體:
供稿:網(wǎng)友

【Android】Android中 Paint 字體、粗細(xì)等屬性的一些設(shè)置

在Android SDK中使用Typeface類來定義字體,可以通過常用字體類型名稱進(jìn)行設(shè)置,如設(shè)置默認(rèn)黑體:

Paint mp = new paint();mp.setTypeface(Typeface.DEFAULT_BOLD)

常用的字體類型名稱還有:

* Typeface.DEFAULT //常規(guī)字體類型

* Typeface.DEFAULT_BOLD //黑體字體類型

* Typeface.MONOSPACE //等寬字體類型

* Typeface.SANS_SERIF //sans serif字體類型

* Typeface.SERIF //serif字體類型

除了字體類型設(shè)置之外,還可以為字體類型設(shè)置字體風(fēng)格,如設(shè)置粗體:

Paint mp = new Paint();Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);p.setTypeface( font );

常用的字體風(fēng)格名稱還有:

* Typeface.BOLD //粗體

* Typeface.BOLD_ITALIC //粗斜體

* Typeface.ITALIC //斜體

* Typeface.NORMAL //常規(guī)

但是有時上面那些設(shè)置在繪圖過程中是不起作用的,所以還有如下設(shè)置方式:

Paint mp = new Paint();mp.setFakeBoldText(true); //true為粗體,false為非粗體mp.setTextSkewX(-0.5f);  //float類型參數(shù),負(fù)數(shù)表示右斜,整數(shù)左斜mp.setUnderlineText(true); //true為下劃線,false為非下劃線mp.setStrikeThruText(true); //true為刪除線,false為非刪除線

Paint常用的方法還有:

mp.setTextSize(); //設(shè)置字體大小,int型,如12mp.setStrokeWidth(w); //設(shè)置線寬,float型,如2.5f,默認(rèn)繪文本無需設(shè)置(默認(rèn)值好像為0),但假如設(shè)置了,再繪制文本的時候一定要恢復(fù)到0

說明:對于中文粗體的設(shè)置,好像只能通過setFakeBoldText(true)來實(shí)現(xiàn),盡管效果看起來不是很實(shí)在(字體中空效果)。實(shí)際發(fā)現(xiàn),最后繪制的效果與手機(jī)硬件也有些關(guān)系,比如前面的繪圖測試程序.

一個小應(yīng)用,在圖片上繪制文字,以下是繪制文字的方法,并且能夠?qū)崿F(xiàn)自動換行,字體自動適配屏幕大小

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());// 創(chuàng)建一個指定的新矩形的坐標(biāo)   Rect dst = new Rect(0, 0, width, hight);// 創(chuàng)建一個指定的新矩形的坐標(biāo)   canvas.drawBitmap(photo, src, dst, photoPaint);// 將photo 縮放或則擴(kuò)大到dst使用的填充區(qū)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); }
//設(shè)置畫筆的字體和顏色 public TextPaint myTextPaint(){      TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);// 設(shè)置畫筆   int TEXT_SIZE = Math.round(25 * getRATIO());   textPaint.setTextSize(TEXT_SIZE);// 字體大小    textPaint.setTypeface(Typeface.DEFAULT_BOLD);// 采用默認(rèn)的寬度    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在圖片上繪制文字的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 林西县| 新化县| 息烽县| 阿瓦提县| 万安县| 太原市| 容城县| 杭锦后旗| 临洮县| 柳州市| 新营市| 方城县| 邯郸市| 鄂伦春自治旗| 潞城市| 淅川县| 沂南县| 玉树县| 宁强县| 台南县| 阆中市| 枣阳市| 高州市| 古丈县| 五常市| 饶阳县| 资阳市| 交城县| 象州县| 花莲市| 沈丘县| 丹寨县| 江都市| 三台县| 左云县| 固安县| 阜康市| 金昌市| 鄂托克前旗| 金乡县| 桐城市|