Когда я вызываю функцию canvas.drawText()
в моей пользовательской точки зрения, я получил странный результат, как это:Почему кернинг ошибочен, когда я использую canvas.drawText?
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.translate(50, 50);
mPaint.setTextSize(60);
String str = "helloworld";
float[] wids = new float[10];
mPaint.getTextWidths(str, wids);
float width = 0;
for (int j = 0; j < wids.length; j++) {
String string = String.valueOf(str.charAt(j));
canvas.drawText(string, width, 50, mPaint); //draw by characters
width = width + mPaint.measureText(string); //the start X
}
}
и это:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.translate(50, 50);
mPaint.setTextSize(60);
String str = "helloworld";
canvas.drawText(str, 0, 50, mPaint); // draw by strings
}
почему два метода запуска разные? Мне нужно рисовать персонажами, но его кернинг ошибочен! Кто-нибудь может вести меня?
попробовать Paint.measureText, назовем его два раза: сначала с начальной == 0 и конец == I + 1 и второй раз с начала == I и конец == I + 1 и вычитать два результата – pskink
Я забыл упомянуть, чтобы использовать три параметра measureText – pskink
Хорошо, я попробую – user3513329