forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Вывод текста (http://forum.boolean.name/showthread.php?t=15533)

Mind 21.12.2011 23:19

Ответ: Вывод текста
 
Цитата:

Сообщение от pozitiffcat (Сообщение 214844)
а ты попробуй DrawTextA

Спасибо и правдо помогло :super:

Mind 22.12.2011 15:12

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

Mind 23.12.2011 12:35

Ответ: Вывод текста
 
Какой командой можно подсчитать длину моего текста(в пикселях)?
Другими словами я хочу объединить текст предложения с текстом цифр, но для этого мне надо знать длину строки первого текста чтобы потом поставить цифры.

pozitiffcat 23.12.2011 12:50

Ответ: Вывод текста
 
ооо ну это хз. Это я не умею делать. Примерно так
заранее узнать размер каждой буквы занести в массив например 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 - это размер нашей строки в пикселях


Mind 26.12.2011 22:23

Ответ: Вывод текста
 
Короче опять проблемы:

Нашел функцию gcvt(....) которая выводит целые и вещественные числа.Пользовался часто пока не начал выводить числа меньше нуля. Причем число - 0.123456789 - выводится нормально, а такое - 0.0123456789 - через экспоненту(например: 0.01 = 1е-0.02).
Как мне избавится от неё. Или может есть другая функция(которую я нигде не могу найти) или может подскажите с алгоритмом преобразования вещ. числа в строку?

mr.DIMAS 26.12.2011 22:33

Ответ: Вывод текста
 
Тему не читай @ сразу отвечай.

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

mr.DIMAS 26.12.2011 22:37

Ответ: Вывод текста
 
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

Mind 26.12.2011 23:48

Ответ: Вывод текста
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 215328)
Чем тебе не угодила функция 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 (Сообщение 215328)
Чем тебе не угодила функция sprintf?

Разве она может выводить текст в определённом шрифте в 3D приложение?
Сам разобрался. И в правду функция делает то что надо.

mr.DIMAS 27.12.2011 00:07

Ответ: Вывод текста
 
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/

Цитата:

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

Mind 27.12.2011 18:51

Ответ: Вывод текста
 
mr.DIMAS а ты не знаешь как сделать чтобы если число например = 0.01, а максимальный размер вводимых цифр=5, то чтоб число выводило - 0.01 а не 0.01000. Хочу избавляться от нулей даже если еще есть место для цифр. Как это сделать(через функцию sprintf и тп)?

pozitiffcat 27.12.2011 20:10

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

УПД.
или так
sprintf(text,"%.*f",2,a);

Mind 28.12.2011 12:23

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

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

dsd 28.12.2011 12:51

Ответ: Вывод текста
 

pozitiffcat 28.12.2011 14:22

Ответ: Вывод текста
 
Цитата:

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

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

Округляй до нужного разряда, что бы не смотреть экспоненты, тебе что супер точность нужна на экране в тексте?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot