Помогите с cairo c++. Не могу понять как выводить число
Все гуд. Все рисует, пишет (букАвы), но вот цифри не хочет выводить ругается на тип float, а мне требуется именно с типом float (string не подходит). Пока выдумал все перенести в массив типа char, но может кто то знает альтернативу получше. Пример кода:
#include <cairo/cairo.h>
#include <cairo/cairo-pdf.h>
#define PDFFILE "cairotst.pdf"
int main(void)
{
cairo_surface_t *surface;
cairo_t *cr;
cairo_text_extents_t te;
surface = cairo_pdf_surface_create(PDFFILE, 1400, 1000);
cr = cairo_create(surface);
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, t_font);
cairo_set_line_width(cr, 0.5);
float T = 36.6;
int y = 40;
int x = 120;
char buffer[20];
sprintf(buffer, "%.2f", T);
cairo_text_extents(cr, tab[0], &te);
cairo_move_to(cr, x + 15, y + 330);
cairo_show_text(cr, T);
cairo_stroke(cr);
cairo_show_page(cr);
cairo_surface_destroy(surface);
cairo_destroy(cr);
return 0;
}
Ответы (1 шт):
Автор решения: Alexey Vesker
→ Ссылка
Прототип функции выглядит так:
void cairo_show_text (cairo_t *cr, const char *utf8);
Т.е. второй параметр это указатель на маcсив символов и float вы туда не сможете передать при всем желании.
Чтобы у вас все корректно работало сначала переведите float в строку и уже потом передавайте в качестве аргумента в функцию, например, так:
cairo_show_text(cr, std::to_string(T).c_str());