2010-05-04 72 views
0
HDC hdcMem = CreateCompatibleDC(hdc); 
HBITMAP hbmOld = SelectObject(hdcMem, g_hbmBall); 
GetObject(g_hbmBall, sizeof(bm), &bm); 
BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); 

我发现很多游戏都使用位图来显示动画。但是我们可以用png来代替吗?我们可以在GDI中使用png代替bitblt中的位图吗?

由于位图是相当大的,当我转换弗朗PNG(1KB - >位图12KB)

感谢您阅读本:)

回答

2

不,你不能用与PNG。 BitBlt(代表“位块传输”,顺便说一下)非常快,但它基本上只是一个简单的内存复制例程。所以BitBlt除了未压缩的位图之外的任何图像格式的唯一方法是首先将该格式转换为的位图。

顺便说一句,应用程序通常使用位图进行动画,因为您不希望每次都需要解压缩精灵图像来增加整个帧渲染时间。位图只是一个通常在内存中缓存内容以提高性能的示例。

+0

非常感谢解释队友:) – nXqd 2010-05-07 04:10:53

1

不,我不这么认为,但GDI +中支持PNG其他几种格式。

+0

GDI +在打开时会将它们转换为位图来支持PNG文件,因此提问者仍然会遇到他提到的尺寸问题。 – MusiGenesis 2010-05-04 11:30:09

相关问题