我已经设法用 GDI 实现双缓冲,但不能用 GDI+。我想显示一个 png 图像而不让它闪烁。此外,在某些时候,我还想使用 GDI+ 用 png 图像实现动画,因此了解如何使用 GDI+ 进行双缓冲是必要的。
我已经设法通过 ISTREAM 将 png 图像转换为 Image 对象:这是我的代码的一部分,可以帮助您了解我遇到问题的地方:
memmove(pBlock,pImage, size);
CreateStreamOnHGlobal(hBlock, FALSE, &pStream);
Graphics graphics(memDC);
Image image(pStream);
int image_width;
int image_height;
image_width= image.GetWidth();
image_height=image.GetHeight();
graphics.DrawImage(&image, posX,posY, image_width, image_height);
BitBlt(hdc, 0, 0, image_width, image_height, memDC, 0, 0, SRCCOPY);
注意:如果我将 png 图像直接绘制到屏幕 DC (hdc) 上,它会渲染得很好。但是,当我尝试先将图像绘制到 memDC,然后将该 memDC 映射到 screenDC 时,没有图像出现!
有人可以指出我如何使用 GDI plus 进行双重缓冲的正确方向吗?谢谢