Небольшой пример того, как заставить графику Cairo работать с MFC?

У меня есть несколько устаревших приложений MFC, и я хотел бы использовать механизм рисования Cairo, чтобы добавить несколько диаграмм и графиков.

Я ищу небольшой пример того, как заставить это работать. По сути, после того как я создал файл PNG или GIF, как мне отобразить его в окне MFC CView?

Мой гугл-фу не находит хороших подсказок.


person Eric H.    schedule 25.08.2009    source источник


Ответы (1)


Из моих демонстрационных образцов,

// cairo_surface_t *surface;
// cairo_t *cr;

// surface = call_win32_surface_create_with_dib_T(CAIRO_FORMAT_ARGB32, 240, 80);
// cr = call_create_T (surface);

// call_surface_write_to_png_T (surface, "hello.png");


HDC src = call_win32_surface_get_dc_T(surface); // <--------
BitBlt(dest, 0, 0, 240, 80, src, 0,0, SRCCOPY); // <--------

Предполагая, что у вас уже есть поверхность, вы можете использовать что-то вроде приведенного выше примера.
dest - это HDC дескриптор окна, поверхность cairo которого вы хотите визуализировать.

Обновление: CView :: OnDraw ()

Вы должны реализовать метод OnDraw () для своего класса CView (унаследованного?).
Вы можете использовать указатель pDC, чтобы нарисовать поверхность cairo, то есть:

pDC->BitBlt(0, 0, 240, 80, src, 0,0, SRCCOPY); // "HDC src" is mentioned above
person Nick Dandoulakis    schedule 25.08.2009
comment
У вас есть ссылка на другие образцы? Я много лет занимался программированием MFC, но только с простыми встроенными командами (диалоговые окна, меню и т. Д.). В последний раз, когда я рисовал графики, я использовал библиотеку (ChartFX 98, если это говорит вам, сколько времени назад это было), и они обрабатывали все рисование. - person Eric H.; 25.08.2009
comment
@ Эрик Х., смотрите мое обновление. У меня нет образцов, специфичных для CView. Если вам все еще нужна помощь в том, как использовать объект CView или в Cairo API, я мог бы найти несколько примеров, но не сейчас. - person Nick Dandoulakis; 25.08.2009