2011-05-18 7 views
70

Quiero dibujar un texto en una pintura. Cómo dibujarlo con una fuente personalizada (ex Helvetica) y en negrita también? Preferiría usar una fuente del sistema y no crearla desde los activos. Gracias.android establece una fuente personalizada para una pintura

+0

"pintura": Do quieres decir 'Canvas'? –

+0

sí, necesito la pintura para establecer algunos estilos ... –

+0

Cómo configurar la fuente de acuerdo con la configuración regional, por ejemplo, para inglés, queremos usar arial.ttf y para coreano, quiero usar gothic_B.ttf. Cómo es posible con pintura sobre lienzo en Android –

Respuesta

133

Si por "fuente personalizada" quiere decir una fuente que se está suministrando como un activo, el siguiente código debería funcionar:

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 no está instalado, pero he usado algunas fuentes instaladas para comparar. Si estoy usando una fuente de elementos, ¿tiene alguna idea de cómo configurar negrita? –

+6

Pruebe: 'Typeface plain = Typeface.createFromAsset (assetManager, pathToFont); Tipo de letra negrita = Typeface.create (plain, Typeface.DEFAULT_BOLD) '. –

+2

@TonythePony su código no funciona para mí. Tipo de letra fontFace = Typeface.createFromAsset (getAssets(), "fonts/comic.TTF"); \t \t Tipo de letra face = Typeface.create (fontFace, Typeface.BOLD); \t \t Pintura de pintura = pintura nueva(); \t \t paint.setTextAlign (Paint.Align.CENTER); \t \t paint.setColor (Color.WHITE); \t \t paint.setTextSize (10); \t \t paint.setTypeface (cara); \t \t \t \t paint.setFlags (Paint.ANTI_ALIAS_FLAG); –

6

Si ya tiene una fuente en uso y desea utilizar una versión en negrita de eso puedes hacer esto.

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); 

que utiliza la respuesta anterior, pero esta modificación era necesario para mí - por lo que sólo pensé en menciono

7

Utilice esta clase de pintura:

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