2011-05-18 36 views
70

我想繪製文本到油漆。如何使用自定義字體(ex Helvetica)繪製並粗體顯示?我會主張使用系統字體,而不是從資產創建它。謝謝。android將自定義字體設置爲油漆

+0

「漆」:做你的意思是'帆布'? – 2011-05-18 10:22:37

+0

是的,我需要油漆來設置一些樣式... – 2011-05-18 10:26:27

+0

如何根據區域設置字體,例如我們想要使用arial.ttf的英文和韓文我想使用gothic_B.ttf。如何在Android上的畫布上顯示油漆 – 2012-05-30 10:57:58

回答

133

如果「自定義字體」你的意思是你是供應作爲一項資產的字體,下面的代碼應該工作:

Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); 
Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD) 
Paint paint = new Paint(); 
paint.setTypeface(bold); 
canvas.drawText("Sample text in bold",0,0,paint); 
+0

Helvetica未安裝,但我使用了一些已安裝的字體進行比較。如果我使用資產中的字體,您是否有任何想法設置粗體? – 2011-05-18 13:07:28

+6

嘗試:'Typeface plain = Typeface.createFromAsset(assetManager,pathToFont); Typeface bold = Typeface.create(plain,Typeface.DEFAULT_BOLD)'。 – 2011-05-18 13:54:18

+2

@TonythePony你的代碼不適合我。字體fontFace = Typeface.createFromAsset(getAssets(),「fonts/comic.TTF」); \t \t Typeface face = Typeface.create(fontFace,Typeface.BOLD); \t \t Paint paint = new Paint(); \t \t paint.setTextAlign(Paint.Align.CENTER); \t \t paint.setColor(Color.WHITE); \t \t paint.setTextSize(10); \t \t paint.setTypeface(face); \t \t \t \t paint.setFlags(Paint.ANTI_ALIAS_FLAG); – 2012-05-24 05:54:23

6

如果你已經在使用的字體,並想用一個大膽的版本你可以做到這一點。

currentPainter = new Paint(Paint.ANTI_ALIAS_FLAG); 
currentPainter.setColor(Color.WHITE); 
currentPainter.setTextSize(Utils.sp2px(getResources(), 14)); // set font size 
Typeface currentTypeFace = currentPainter.getTypeface(); 
Typeface bold = Typeface.create(currentTypeFace, Typeface.BOLD); 
currentPainter.setTypeface(bold); 

我用上面的答案,但這種修改是必要的,我 - 所以只是想我會提到它

7

使用該塗料類:

Paint paint = new Paint(); 
    paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));