Tôi đang sử dụng Canvas để tạo Bản vẽ với một số nền và một số văn bản. Các drawable được sử dụng như một hợp chất drawable bên trong một EditText.Android canvas drawText y-vị trí của văn bản
Văn bản được vẽ qua drawText() trên canvas, nhưng tôi gặp sự cố với vị trí y của văn bản được vẽ trong một số trường hợp. Trong những trường hợp đó, các phần của một số ký tự bị cắt bỏ (xem liên kết hình ảnh).
Nhân vật không vấn đề định vị:
http://i50.tinypic.com/zkpu1l.jpg
Nhân vật với vấn đề định vị, văn bản có chứa 'g', 'j', 'q', v.v .:
http://i45.tinypic.com/vrqxja.jpg
Bạn có thể tìm đoạn mã để tạo lại sự cố bên dưới.
Có chuyên gia nào biết cách xác định độ lệch thích hợp cho vị trí y không?
public void writeTestBitmap(String text, String fileName) {
// font size
float fontSize = new EditText(this.getContext()).getTextSize();
fontSize+=fontSize*0.2f;
// paint to write text with
Paint paint = new Paint();
paint.setStyle(Style.FILL);
paint.setColor(Color.DKGRAY);
paint.setAntiAlias(true);
paint.setTypeface(Typeface.SERIF);
paint.setTextSize((int)fontSize);
// min. rect of text
Rect textBounds = new Rect();
paint.getTextBounds(text, 0, text.length(), textBounds);
// create bitmap for text
Bitmap bm = Bitmap.createBitmap(textBounds.width(), textBounds.height(), Bitmap.Config.ARGB_8888);
// canvas
Canvas canvas = new Canvas(bm);
canvas.drawARGB(255, 0, 255, 0);// for visualization
// y = ?
canvas.drawText(text, 0, textBounds.height(), paint);
try {
FileOutputStream out = new FileOutputStream(fileName);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
} catch (Exception e) {
e.printStackTrace();
}
}
Cảm ơn bạn đã chỉ cho tôi đúng hướng. canvas.drawText (văn bản, 0, textBounds.height() - textBounds.bottom, sơn); là giải pháp – darksaga