Небольшой пример получения графики Каира для работы с MFC? - PullRequest
2 голосов
/ 25 августа 2009

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

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

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

1 Ответ

1 голос
/ 25 августа 2009

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

// 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 окна, которое вы хотите отобразить на поверхности Каира.

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

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

pDC->BitBlt(0, 0, 240, 80, src, 0,0, SRCCOPY); // "HDC src" is mentioned above
...