Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос Рендер текста по вертикали

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
27 Июн 2022
Сообщения
87
Реакции
2
Хочу зарендерить текст по вертикали вроде получилось но как итог какая-то смесь
изображение_2024-01-11_011705512.png
Code:
Expand Collapse Copy
String name = "SemPartin"
for (int i = 0; i < name.length(); i++) {
                        char sym = name.charAt(i); // Получаем символ по индексу
                        profileFont.draw(String.valueOf(sym), uiPosition.x  - 30 ,
                                uiPosition.y + 4 + sym* 2  + profileFont.getMiddleOfBox(20),
                                timeTheme.textColor.getRGB());
                    }
 
Тебе надо получать размер каждого символа с твоим шрифтом.
Тобишь например
C++:
Expand Collapse Copy
for ( int i = 0; i < name.length( ); i++ )
{
    char symbol = name.at( i );
    Vector size = Render::GetTextSize( symbol, myFont );
    Render::DrawText( Vector( 0, size.x * i ), symbol, myFont );
}
 
размер каждого символа
размер каждого символа как раз таки не нужно, достаточно размера первого символа с достаточным паддингом. если у тебя будет какой нибудь

n
e
g
r

с самым обычным шрифтом, то ты на выходе получишь размазню ебучую.
 
размер каждого символа как раз таки не нужно, достаточно размера первого символа с достаточным паддингом. если у тебя будет какой нибудь

n
e
g
r

с самым обычным шрифтом, то ты на выходе получишь размазню ебучую.
Можешь отправить как это будет выглядеть +- в коде
 
Можешь отправить как это будет выглядеть +- в коде
Java:
Expand Collapse Copy
String name = "SemPartin"

// получаем приблизительный размер нулевого символа
// если ты чувствуешь себя как принцесса - можешь вычислить медиану размера всех символов,
// надо потестить
int textSize = profileFont.getCharSize(name.charAt(0));

for (int i = 0; i < name.length(); i++) {
  char sym = name.charAt(i);
  
  int currentSymbolOffset = i * textSize;
  
  int currentXPosition = uiPosition.x;
  int currentYPosition = uiPosition.y + currentSymbolOffset;

  profileFont.draw(
    String.valueOf(sym),
    currentXPosition,
    currentYPosition,
    timeTheme.textColor.getRGB()
  );
}

псевдокод будет выглядеть примерно так, но если ты знаешь размер шрифта изначально то высчитывать размер тебе нахуй не нужно
also полагаю что бага находица вот здесь, ты кастуешь значение байта на позицию (зачем то).
 
Назад
Сверху Снизу