Gdi+ 双缓冲实现解决方法

Gdi+ 双缓冲实现
在百度搜索“GDI+ 双缓冲”,找了基本都是GDI 的, 用MFC 的 CDC去实现,但我现在使用的是windows sdk,该如何实现?

HDC hdc = BeginPaint(m_hWnd, &ps);
Bitmap bitmap(600, 400);
Graphics gMem(bitmap);
gMem.DrawLine(); // 画线画图什么的

Graphics gShow(hdc);
gShow(bitmap, Point):
EndPaint(m_hWnd, &ps);

GDI+ 双缓冲实现是这样的过程吗?  我这样做是双缓冲吗

------解决思路----------------------
双缓冲不分什么GDI或者GDI+
双缓冲只是争对DC来说的.
你只要能区分设备DC与内存DC,  双缓冲就可以用好了.

双缓冲需要先创建一个内存DC(兼容DC)作为目标DC和创建内存位图作为画板 , , 
然后你的绘图都先绘制到这个内存DC上.  (不管你是用GDI还是GDI+绘制,   GDI就不用说了, GDI+创建Graphics对象时使用这个内存DC句柄)
然后再把这个内存DC绘制到设备DC上. 一般是BitBlt等.

所以, 你给出的代码是其中一种方式, 还可以创建出内存DC, 和内存位图. 然后Graphics对象创建时使用内存这个内存DC.

一般绘图, 都是GDI和GDI+混合使用. 除非某些对效率要求非常高的性况
------解决思路----------------------
双缓冲绘图:建立内存兼容DC,在兼容DC上绘制好后再贴到界面的DC上面去,提高绘图效率,避免闪烁发生。
至于在兼容DC上面绘图的过程,你喜欢用GDI绘制就用GDI,你当然可以用GDI+绘制,你还可以用skia等开源2D绘图引擎绘制……
所以双缓冲绘图和你使用的绘制引擎是没有关系的。