91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Android中使用Canvas繪制文字

發布時間:2021-03-10 16:33:02 來源:億速云 閱讀:595 作者:Leah 欄目:移動開發

本篇文章給大家分享的是有關如何在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繪制文字,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涟源市| 东港市| 云安县| 聊城市| 乌什县| 巨鹿县| 台州市| 江川县| 台湾省| 玉龙| 若尔盖县| 虞城县| 桐梓县| 鹤壁市| 平遥县| 四川省| 原平市| 合阳县| 通河县| 丰顺县| 平罗县| 宣城市| 封开县| 施秉县| 财经| 故城县| 旌德县| 滨州市| 云梦县| 琼结县| 亚东县| 盐边县| 自贡市| 安吉县| 南康市| 浮梁县| 怀来县| 太白县| 宁陵县| 福建省| 且末县|