千家信息网

AGG第八课 MFC工程中应用AGG

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,前言除了pure_api例子外,其他的都是基于agg::platform_support之上进行开发的。这些例子通过调用agg::platform_support,隐藏了如何创建渲染缓存buffer以
千家信息网最后更新 2024年11月24日AGG第八课 MFC工程中应用AGG

前言

除了pure_api例子外,其他的都是基于agg::platform_support之上进行开发的。这些例子通过调用agg::platform_support,隐藏了如何创建渲染缓存buffer以及关联agg::rendering_buffer的细节。一句话,通过继承agg::platform_support,就可以直接调用rbuf_window(),获取渲染的缓存。而pure_api是一个最原始的程序,通过调用系统API函数,构建一个最完整详细的例子程序,而这些所做的事情,已经全部封装到agg::platform_support里面。在wx章节中,有详细介绍如何应用AGG进行渲染。


要求

本意是希望获取当前位图的渲染缓存,然后传递给agg::rendering_bufer,然后开始进行AGG的渲染。


结果

查询了很多资料,还是只能够创建兼容DC,然后创建兼容位图,然后选入位图,获取渲染缓存,绘制之后,贴图到当前的兼容DC上

HDC mem_dc = ::CreateCompatibleDC(hdc); //创建兼容DC


void* buf = 0;


HBITMAP bmp = ::CreateDIBSection( //创建兼容位图,获取缓存

mem_dc,

&bmp_info,

DIB_RGB_COLORS,

&buf,

0,

0

);


// Selecting the object before doing anything allows you

// to use AGG together with native Windows GDI.

HBITMAP temp = (HBITMAP)::SelectObject(mem_dc, bmp);

//贴图到当前DC上,减去100,是不希望覆盖右边的一小块区域

::BitBlt(

hdc,

rt.left,

rt.top,

width - 100,

height,

mem_dc,

0,

0,

SRCCOPY

);

总结

详细的流程请参考源码目录下的examples提供了完整的测试用例


0