|
21.12.2011, 23:19
|
#16
|
ПроЭктировщик
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений (для 18 пользователей)
|
Ответ: Вывод текста
Сообщение от pozitiffcat
а ты попробуй DrawTextA
|
Спасибо и правдо помогло
|
(Offline)
|
|
22.12.2011, 15:12
|
#17
|
ПроЭктировщик
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений (для 18 пользователей)
|
Ответ: Вывод текста
Еще одно. А как узнать длину строки в пикселях?
Последний раз редактировалось Mind, 22.12.2011 в 22:01.
|
(Offline)
|
|
23.12.2011, 12:35
|
#18
|
ПроЭктировщик
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений (для 18 пользователей)
|
Ответ: Вывод текста
Какой командой можно подсчитать длину моего текста(в пикселях)?
Другими словами я хочу объединить текст предложения с текстом цифр, но для этого мне надо знать длину строки первого текста чтобы потом поставить цифры.
|
(Offline)
|
|
23.12.2011, 12:50
|
#19
|
Мастер
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.12.2011, 22:23
|
#20
|
ПроЭктировщик
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений (для 18 пользователей)
|
Ответ: Вывод текста
Короче опять проблемы:
Нашел функцию gcvt(....) которая выводит целые и вещественные числа.Пользовался часто пока не начал выводить числа меньше нуля. Причем число - 0.123456789 - выводится нормально, а такое - 0.0123456789 - через экспоненту(например: 0.01 = 1е-0.02).
Как мне избавится от неё. Или может есть другая функция(которую я нигде не могу найти) или может подскажите с алгоритмом преобразования вещ. числа в строку?
|
(Offline)
|
|
26.12.2011, 22:33
|
#21
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Вывод текста
Тему не читай @ сразу отвечай.
Чем тебе не угодила функция sprintf?
http://www.cplusplus.com/reference/c...stdio/sprintf/
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.12.2011, 22:37
|
#22
|
Дэвелопер
Регистрация: 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
|
ПроЭктировщик
Регистрация: 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
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Вывод текста
__________________
|
(Offline)
|
|
27.12.2011, 18:51
|
#25
|
ПроЭктировщик
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений (для 18 пользователей)
|
Ответ: Вывод текста
mr.DIMAS а ты не знаешь как сделать чтобы если число например = 0.01, а максимальный размер вводимых цифр=5, то чтоб число выводило - 0.01 а не 0.01000. Хочу избавляться от нулей даже если еще есть место для цифр. Как это сделать(через функцию sprintf и тп)?
|
(Offline)
|
|
27.12.2011, 20:10
|
#26
|
Мастер
Регистрация: 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
|
ПроЭктировщик
Регистрация: 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
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Вывод текста
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.12.2011, 14:22
|
#29
|
Мастер
Регистрация: 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)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:32.
|