天天看點

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, 

                ); 

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

                );

繼續閱讀