2009-08-25 9 views
2

J'ai quelques applications MFC héritées, et j'aimerais utiliser le moteur de dessin du Caire pour ajouter quelques graphiques et graphiques.Petit exemple sur comment faire fonctionner les graphismes Cairo avec MFC?

Je suis à la recherche d'un petit exemple de comment faire fonctionner ça. Fondamentalement, une fois que j'ai créé un fichier PNG ou GIF, comment puis-je obtenir ce spectacle dans une fenêtre CView MFC?

Mon google-fu ne trouve aucun indice.

Répondre

1

De mes échantillons de démonstration,

// 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); // <-------- 

En supposant que vous avez déjà une surface, vous pouvez utiliser quelque chose comme l'exemple ci-dessus.
dest est le handle HDC à la fenêtre que vous souhaitez rendre la surface du cairo.

Mise à jour:CView::OnDraw()

Vous devez implémenter la classe méthode pour votre CView OnDraw() (hérité?).
Vous pouvez utiliser le pointeur pDC pour dessiner la surface caire, à savoir:

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

Avez-vous un lien vers plusieurs échantillons? J'ai fait des années et des années de programmation MFC, mais seulement avec les builtins simples (boîtes de dialogue, menus, etc). La dernière fois que j'ai fait des graphiques, j'ai utilisé une bibliothèque (ChartFX 98, si cela vous dit depuis combien de temps), et ils ont manipulé tout le dessin. –

+0

@Eric H., voir ma mise à jour. Je n'ai pas d'échantillons spécifiques à CView. Si vous avez encore besoin d'aide sur l'utilisation d'un objet CView ou sur l'API Cairo, je pourrais trouver quelques exemples, mais pas pour le moment. –

Questions connexes