最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年01月22日 10:19:55   作者:s1986q  
下面小編就為大家分享一篇Android 使用Canvas在圖片上繪制文字的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

【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è)置在繪圖過程中是不起作用的,所以還有如下設(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型,如12
mp.setStrokeWidth(w); //設(shè)置線寬,float型,如2.5f,默認(rèn)繪文本無需設(shè)置(默認(rèn)值好像為0),但假如設(shè)置了,再繪制文本的時(shí)候一定要恢復(fù)到0

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

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

private void drawNewBitmap(ImageView imageView, String str) {
   Bitmap photo = BitmapFactory.decodeResource(this.getResources(), R.drawable.background);
   int width = photo.getWidth();
   int hight = photo.getHeight();
   //建立一個(gè)空的Bitmap
   Bitmap icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888);
   // 初始化畫布繪制的圖像到icon上
   Canvas canvas = new Canvas(icon);
   // 建立畫筆
   Paint photoPaint = new Paint(); 
   // 獲取更清晰的圖像采樣,防抖動(dòng)
   photoPaint.setDither(true); 
   // 過濾一下,抗劇齒
   photoPaint.setFilterBitmap(true);
   
   Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());// 創(chuàng)建一個(gè)指定的新矩形的坐標(biāo)
   Rect dst = new Rect(0, 0, width, hight);// 創(chuàng)建一個(gè)指定的新矩形的坐標(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;
//寫入文字,自動(dòng)換行的方法
 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)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android設(shè)計(jì)模式之適配器(Adapter)模式

    Android設(shè)計(jì)模式之適配器(Adapter)模式

    這篇文章主要介紹了Android設(shè)計(jì)模式之適配器(Adapter)模式,以源碼解析的方式分析適配器模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android開發(fā)實(shí)現(xiàn)Fragment監(jiān)聽返回鍵事件功能的方法

    Android開發(fā)實(shí)現(xiàn)Fragment監(jiān)聽返回鍵事件功能的方法

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)Fragment監(jiān)聽返回鍵事件功能的方法,結(jié)合實(shí)例形式分析了Android使用Fragment監(jiān)聽并屏蔽返回鍵按鈕的實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android獲取手機(jī)號(hào)碼和運(yùn)營商信息的方法

    Android獲取手機(jī)號(hào)碼和運(yùn)營商信息的方法

    這篇文章主要介紹了Android獲取手機(jī)號(hào)碼和運(yùn)營商信息的方法,以實(shí)例形式完整講述了獲取手機(jī)號(hào)碼和運(yùn)營商信息的技巧,代碼中包含完整的注釋說明,需要的朋友可以參考下
    2015-01-01
  • Android Rsa數(shù)據(jù)加解密的介紹與使用示例

    Android Rsa數(shù)據(jù)加解密的介紹與使用示例

    RSA是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。想起自己曾經(jīng)使用過的Rsa非對(duì)稱加密算法,閑下來總結(jié)一下。方便自己和大家以后使用的時(shí)候參考借鑒。下面來一起看看吧。
    2016-09-09
  • Android利用Intent實(shí)現(xiàn)讀取圖片操作

    Android利用Intent實(shí)現(xiàn)讀取圖片操作

    這篇文章主要為大家詳細(xì)介紹了Android利用Intent實(shí)現(xiàn)讀取圖片操作的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 詳解Android應(yīng)用沙盒機(jī)制

    詳解Android應(yīng)用沙盒機(jī)制

    這篇文章主要介紹了Android應(yīng)用沙盒機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下
    2021-04-04
  • Android Volley框架使用方法詳解

    Android Volley框架使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android Volley框架使用方法,從網(wǎng)絡(luò)請(qǐng)求和圖片加載兩大方面進(jìn)行分析,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android仿淘寶詳情頁面viewPager滑動(dòng)到最后一張圖片跳轉(zhuǎn)的功能

    Android仿淘寶詳情頁面viewPager滑動(dòng)到最后一張圖片跳轉(zhuǎn)的功能

    需要做一個(gè)仿淘寶客戶端ViewPager滑動(dòng)到最后一頁,再拖動(dòng)的時(shí)候跳到詳情的功能,剛開始我也迷糊了,通過查閱相關(guān)資料發(fā)現(xiàn)有好多種實(shí)現(xiàn)方法,下面小編給大家分享實(shí)例代碼,感興趣的朋友一起看看吧
    2017-03-03
  • Android性能優(yōu)化及性能優(yōu)化工具

    Android性能優(yōu)化及性能優(yōu)化工具

    這篇文章主要給大家分享的是Android性能優(yōu)化及性能優(yōu)化工具,下面文字會(huì)圍繞Android性能優(yōu)化的相關(guān)資料詳細(xì)的展開具體內(nèi)容,需要的朋友可以參考一下,希望對(duì)大家有所幫助
    2021-11-11
  • native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版

    native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版

    本文為大家分享了native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版包括手機(jī)MAC地址,手機(jī)內(nèi)存大小,手機(jī)存儲(chǔ)空間大小,手機(jī)CPU信息等手機(jī)硬件基本信息
    2018-09-09

最新評(píng)論

宜都市| 天柱县| 泸溪县| 茂名市| 调兵山市| 乐清市| 通江县| 绥中县| 万源市| 安塞县| 酒泉市| 博野县| 布拖县| 米脂县| 巴南区| 江津市| 黄浦区| 垦利县| 海阳市| 深泽县| 涪陵区| 商都县| 会理县| 双桥区| 武安市| 墨竹工卡县| 晋州市| 德格县| 琼中| 鹤山市| 大关县| 宁陵县| 兴安盟| 嘉鱼县| 剑河县| 长丰县| 隆回县| 府谷县| 陇西县| 峨边| 无极县|