Game Maker - создание игр | HellRoom Games
Декабрь 13, 2024, 02:26:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как подсчитать количество строк текста в draw_text_ext?  (Прочитано 1263 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Solar Off Roader
Посетитель
**

Репутация: 1
Offline Offline

API: GameMaker Studio Standard
Сообщений: 31


« : Июнь 27, 2023, 11:09:29 »

Приветствую!  Пишу текстовый квест, и вот такая задача - нарисовать фон-плашку, которая могла бы автоматически подстраиваться под размер текста (пример в скриншоте). Текст выводиться с помощью draw_text_ext.  Как подсчитать количество строк или может ещё есть какой способ реализовать такое?)



[вложение удалено Администратором]
Записан
ярик
Активный участник
*****

Репутация: 21
Offline Offline

Награды:
За постоянность! [10 дней на форуме]
API: GameMaker Studio 2
Сообщений: 396



« Ответ #1 : Июнь 27, 2023, 12:36:30 »

Справка:
string_width
string_height
draw_set_halign   (Опционально)

Код:
//draw_set_halign(fa_left);
//draw_set_color(color);
draw_roundrect(x, y, x + string_width(string), y + string_height(string), false);

    // string - рисуемый вами текст.
    // x, y - координаты рисуемого вами текста.

Надеюсь вы разберётесь в данном методе.
Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
Solar Off Roader
Посетитель
**

Репутация: 1
Offline Offline

API: GameMaker Studio Standard
Сообщений: 31


« Ответ #2 : Июнь 27, 2023, 14:26:10 »

Справка:
string_width
string_height
draw_set_halign   (Опционально)

Код:
//draw_set_halign(fa_left);
//draw_set_color(color);
draw_roundrect(x, y, x + string_width(string), y + string_height(string), false);

    // string - рисуемый вами текст.
    // x, y - координаты рисуемого вами текста.

Надеюсь вы разберётесь в данном методе.

Дело в том, что draw_text_ext рисует текст в установленной ширине и сам переносит текст на следующую строку. По вашему методу GM измерит весь текст в 1 строку и нарисует прямоугольник в одну строку, т к string_height(string) получается равен 1

Код:
var ww = string_width(text);
var hh = string_height(text);

if point_in_rectangle(mouse_x, mouse_y, x + 25, y, x + ww + 25, y + hh)
{
draw_set_color(c_aqua);
draw_set_halign(fa_left);
draw_roundrect_colour(x, y, x + ww, y + hh, #2B2E4A, #2B2E4A, false);
draw_text_ext(x + 25, y, text, stringHeight, boxWidth);

} else {

draw_set_color(c_white);
draw_set_halign(fa_left);
draw_roundrect_colour(x, y, x + ww, y + hh, #2B2E4A, #2B2E4A, false);
draw_text_ext(x + 25, y, text, stringHeight, boxWidth);

}


[вложение удалено Администратором]
« Последнее редактирование: Июнь 27, 2023, 17:22:36 от Solar Off Roader » Записан
SilentPhil
Norland
GM Pro user
*

Репутация: 479
Offline Offline

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #3 : Июнь 27, 2023, 17:45:19 »

string_width_ext и string_height_ext соответственно
Записан

         
Да, на них можно кликать.
Solar Off Roader
Посетитель
**

Репутация: 1
Offline Offline

API: GameMaker Studio Standard
Сообщений: 31


« Ответ #4 : Июнь 27, 2023, 17:57:40 »

string_width_ext и string_height_ext соответственно

Спасибо! Уже хотел дедовским способом
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.094 секунд. Запросов: 28.