Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 21.12.2011, 23:19   #16
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

Сообщение от pozitiffcat Посмотреть сообщение
а ты попробуй DrawTextA
Спасибо и правдо помогло
(Offline)
 
Ответить с цитированием
Старый 22.12.2011, 15:12   #17
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

Еще одно. А как узнать длину строки в пикселях?

Последний раз редактировалось Mind, 22.12.2011 в 22:01.
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 12:35   #18
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

Какой командой можно подсчитать длину моего текста(в пикселях)?
Другими словами я хочу объединить текст предложения с текстом цифр, но для этого мне надо знать длину строки первого текста чтобы потом поставить цифры.
(Offline)
 
Ответить с цитированием
Старый 23.12.2011, 12:50   #19
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Вывод текста

ооо ну это хз. Это я не умею делать. Примерно так
заранее узнать размер каждой буквы занести в массив например int wordSize[255];
узнать промежуток между буквами например
int space = 1;
int len=0;
for(int i=0;i<strlen(text);i++)
{
   int sizea = wordsize[(int)text[i]];
   len += sizea + space;
}
len -= space;
//len - это размер нашей строки в пикселях
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mind (23.12.2011)
Старый 26.12.2011, 22:23   #20
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

Короче опять проблемы:

Нашел функцию gcvt(....) которая выводит целые и вещественные числа.Пользовался часто пока не начал выводить числа меньше нуля. Причем число - 0.123456789 - выводится нормально, а такое - 0.0123456789 - через экспоненту(например: 0.01 = 1е-0.02).
Как мне избавится от неё. Или может есть другая функция(которую я нигде не могу найти) или может подскажите с алгоритмом преобразования вещ. числа в строку?
(Offline)
 
Ответить с цитированием
Старый 26.12.2011, 22:33   #21
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Вывод текста

Тему не читай @ сразу отвечай.

Чем тебе не угодила функция sprintf?
http://www.cplusplus.com/reference/c...stdio/sprintf/
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mind (26.12.2011)
Старый 26.12.2011, 22:37   #22
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Вывод текста

UPD. Чтобы не париться с преобразованием каждой переменной в строку сделай свою функцию вывода с переменным кол-вом аргументов ( как printf и тому подобные ). Как-то при работе с Б3Д Сдк мне понадобилась подобная функция. Вот она

void bbTextEx( int x, int y, const char * text, ... )
{
va_list argumentList;
char buffer[512];

va_start(argumentList, text);
vsprintf_s( buffer, text, argumentList);
va_end(argumentList);

bbText( x,y, buffer );
};

нужно еще подключить windows.h
__________________

(Offline)
 
Ответить с цитированием
Старый 26.12.2011, 23:48   #23
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

Сообщение от mr.DIMAS Посмотреть сообщение
Чем тебе не угодила функция sprintf?
Разве она может выводить текст в определённом шрифте в 3D приложение?

void bbTextEx( int x, int y, const char * text, ... )
{
va_list argumentList;
char buffer[512];

va_start(argumentList, text);
vsprintf_s( buffer, text, argumentList);
va_end(argumentList);

bbText( x,y, buffer );
};
Функция нписана на С++? Если да то что такое va_list,va_start,va_end?

Update:
Извиняюсь за это:

Сообщение от mr.DIMAS Посмотреть сообщение
Чем тебе не угодила функция sprintf?
Разве она может выводить текст в определённом шрифте в 3D приложение?
Сам разобрался. И в правду функция делает то что надо.
(Offline)
 
Ответить с цитированием
Старый 27.12.2011, 00:07   #24
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Вывод текста

http://www.cplusplus.com/reference/c...darg/va_start/
http://www.cplusplus.com/reference/c...stdarg/va_end/
http://www.cplusplus.com/reference/c...tdio/vsprintf/

Функция нписана на С++
А мы сейчас в какой теме по какому языку?
__________________

(Offline)
 
Ответить с цитированием
Старый 27.12.2011, 18:51   #25
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

mr.DIMAS а ты не знаешь как сделать чтобы если число например = 0.01, а максимальный размер вводимых цифр=5, то чтоб число выводило - 0.01 а не 0.01000. Хочу избавляться от нулей даже если еще есть место для цифр. Как это сделать(через функцию sprintf и тп)?
(Offline)
 
Ответить с цитированием
Старый 27.12.2011, 20:10   #26
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Вывод текста

float a=0.01f;
char text[5];
sprintf(text,"%.2f",a);//так че не работает?

УПД.
или так
sprintf(text,"%.*f",2,a);
(Offline)
 
Ответить с цитированием
Старый 28.12.2011, 12:23   #27
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Вывод текста

Я наверно не правильно объяснил: нужно чтоб когда я ввожу число(будь то 0.01 или 0.001) оно само выбирало сколько цифр после запятой должно быть до последней цифры, а когда следующие идут нули то их оно просто округлять(не выводить).
Например:
0.001 = 0.001
0.0123000 = 0.0123
3.14150 = 3.1415
и т.д.

Нашел следующие:
sprintf(buffer,"%.g",nubmer);
тогда все выше описанные проблемы исчезают кроме одной: мин. предел числа = 0.0001 -> далее идёт экспонент(который мне не нужен)!
(Offline)
 
Ответить с цитированием
Старый 28.12.2011, 12:51   #28
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Вывод текста

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mind (28.12.2011)
Старый 28.12.2011, 14:22   #29
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Вывод текста

Сообщение от Mind Посмотреть сообщение
Я наверно не правильно объяснил: нужно чтоб когда я ввожу число(будь то 0.01 или 0.001) оно само выбирало сколько цифр после запятой должно быть до последней цифры, а когда следующие идут нули то их оно просто округлять(не выводить).
Например:
0.001 = 0.001
0.0123000 = 0.0123
3.14150 = 3.1415
и т.д.

Нашел следующие:
sprintf(buffer,"%.g",nubmer);
тогда все выше описанные проблемы исчезают кроме одной: мин. предел числа = 0.0001 -> далее идёт экспонент(который мне не нужен)!
Округляй до нужного разряда, что бы не смотреть экспоненты, тебе что супер точность нужна на экране в тексте?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com