让 Cairo 图形与 MFC 一起工作的小例子?

Posted

技术标签:

【中文标题】让 Cairo 图形与 MFC 一起工作的小例子?【英文标题】:Small example on getting Cairo graphics to work with MFC? 【发布时间】:2009-08-25 13:05:08 【问题描述】:

我有一些旧版 MFC 应用程序,我想使用 Cairo 绘图引擎添加一些图表。

我正在寻找一个如何让它发挥作用的小例子。基本上,一旦我创建了 PNG 或 GIF 文件,我如何让它显示在 MFC CView 窗口中?

我的 google-fu 没有找到任何好的线索。

【问题讨论】:

【参考方案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 是您要渲染 cairo 表面的窗口的 HDC 句柄。 更新: CView::OnDraw()

您应该为您的 CView(继承?)类实现 OnDraw() 方法。 可以使用pDC指针来绘制cairo曲面,即:

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

【讨论】:

您有更多示例的链接吗?我已经做了很多年的 MFC 编程,但只使用了简单的内置函数(对话框、菜单等)。上次我做图表时,我使用了一个库(ChartFX 98,如果它告诉你它是多久以前的),他们处理了所有的绘图。 @Eric H.,请参阅我的更新。我没有特定于 CView 的示例。如果您仍然需要有关如何使用 CView 对象或 Cairo API 的帮助,我可以找到一些示例,但目前还没有。

以上是关于让 Cairo 图形与 MFC 一起工作的小例子?的主要内容,如果未能解决你的问题,请参考以下文章

使用 cairo 库创建高光效果

将 cairo 与 gtk3 一起使用

在这个例子中,让 jQuery/Ajax 与 CodeIgniter 一起工作的最佳方法是啥?

如何用c语言作出有图形界面的小程序?

如何用c语言作出有图形界面的小程序?

如何让R与Python一起工作 | 案例讲解