2013-07-29 37 views
38

Tôi muốn biểu tượng Bitmap có văn bản in đậm để vẽ trên bản đồ. Tôi có một đoạn trích để viết văn bản trên hình ảnh:Làm cách nào để vẽ văn bản in đậm trên Bitmap?

Bitmap icon = BitmapFactory.decodeResource(PropertyMapList.this.getResources(), 
     R.drawable.location_mark); 
TextPaint paint = new TextPaint(); 
paint.setColor(Color.BLACK); 
paint.setTextSize(14); 
paint.setFakeBoldText(true); 
//paint.setTextAlign(Align.CENTER); 
Bitmap copy = icon.copy(Bitmap.Config.ARGB_8888, true); 
Canvas canvas = new Canvas(copy); 
//canvas.drawText(jsonObj.getString("district_name"), 5, canvas.getHeight()/2, paint); 
String districtName = jsonObj.getString("district_name"); 
StaticLayout layout = new StaticLayout((districtName.length()>25 ? districtName.substring(0, 24)+"..":districtName)+"\n"+jsonObj.getString("total_properties"), paint, canvas.getWidth()-10,Layout.Alignment.ALIGN_CENTER, 1.3f, 0, false); 
canvas.translate(5, canvas.getHeight()/2); //position the text 
layout.draw(canvas); 

setFakeBoldText(true) không hoạt động đối với tôi. Tôi muốn văn bản được vẽ trên Bitmap được in đậm.

Trả lời

113

Sử dụng phương pháp setTypeface trên đối tượng Paint để đặt phông chữ thành thứ gì đó có kiểu in đậm được bật.

paint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD)); 
+1

Bạn có thể giải thích rõ ràng không? –

+0

setTypeface cho phép bạn đặt phông chữ. Phông chữ có kiểu, như in đậm, in nghiêng, vv Bạn có thể xem các hàm tạo cho Kiểu chữ và xem cách tạo phông chữ theo kiểu đó. Một khi bạn tạo ra một và thiết lập nó thông qua cuộc gọi này, tất cả các lệnh vẽ trong tương lai với sơn này sẽ sử dụng phông chữ đó. –

+1

Tôi đã thử 6 hoặc 7 câu trả lời và đây là câu trả lời duy nhất thực sự hiệu quả. – durbnpoisn

Các vấn đề liên quan