Получение размеров визуализированного текста в библиотеке Cimg

У меня есть изображение прямоугольника, и мне нужно нарисовать в нем размеры прямоугольника. Теперь я хочу узнать размер текста, который я собираюсь нарисовать, чтобы я мог определить подходящий размер шрифта, чтобы убедиться, что текст не выходит за границы прямоугольников, но и не слишком мал. Я использовал это: http://www.codeproject.com/Articles/363908/Simple-two-file-graphics-library-for-C-Cplusplus раньше, но это немного ограничено в использовании, но у него есть функция

int ezd_text_size( HEZDFONT x_hFont, const char *x_pText, int x_nTextLen, int *pw, int *ph )

Который с учетом шрифта и char* будет вычислять длину и ширину области, которую потребуется нарисованному тексту. Однако я не могу найти ничего подобного в документации Cimg.

Так есть ли у кого-нибудь опыт решения этой проблемы с использованием Cimg?


person user2520938    schedule 12.06.2014    source источник


Ответы (1)


Я предполагаю, что вы хотите использовать метод CImg<T>::draw_text() для рисования текста на CImg<T> изображении. В этом случае у вас есть возможность вызвать draw_text() для пустого экземпляра, он автоматически установит размер изображения на минимальную ограничивающую рамку, содержащую ваш текст. Таким образом, width() и height() полученного изображения дают вам то, что вы ищете.

CImg<unsigned char> imgtext;
unsigned char color = 1;
imgtext.draw_text(0,0,"Hello guys !",&color,0,1,23);  // Draw with font height 23.
// Now, imgtext.width() and imgtext.height() gives you the dimensions you want.

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

person bvalabas    schedule 13.06.2014
comment
Большое спасибо! Именно то, что мне нужно - person user2520938; 13.06.2014