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

首頁 > 系統 > Android > 正文

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

2019-10-22 18:16:36
字體:
來源:轉載
供稿:網友

【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, 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在圖片上繪制文字的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 翁源县| 梨树县| 江陵县| 象山县| 陇川县| 莱阳市| 昆山市| 巴南区| 会昌县| 和田县| 正定县| 陆河县| 毕节市| 华亭县| 和硕县| 页游| 秦安县| 旬邑县| 精河县| 开阳县| 乳山市| 浑源县| 清苑县| 托克逊县| 京山县| 阳曲县| 台北市| 尚义县| 拉孜县| 益阳市| 石河子市| 德安县| 祥云县| 新乐市| 洪雅县| 永安市| 普宁市| 深水埗区| 阜新市| 樟树市| 松溪县|