让 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 一起工作的小例子?的主要内容,如果未能解决你的问题,请参考以下文章