我们可以在 GDI 中为 bitblt 使用 png 而不是位图吗?
Posted
技术标签:
【中文标题】我们可以在 GDI 中为 bitblt 使用 png 而不是位图吗?【英文标题】:Can we use png instead bitmap in GDI for bitblt? 【发布时间】:2010-05-04 11:18:55 【问题描述】: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 代替吗?
因为当我从 png ( 1kb -> 12kb in bitmap ) 转换时位图很大
感谢您阅读本文:)
【问题讨论】:
【参考方案1】:不,您不能 BitBlt
使用 PNG。 BitBlt
(顺便说一下,代表“位块传输”)非常快,但它基本上只是一个简单的内存复制例程。因此,BitBlt
除未压缩位图之外的任何图像格式的唯一方法是首先将该格式转换为位图。
顺便说一句,应用程序通常将位图用于动画,因为您不希望每次都解压缩精灵图像而增加整体帧渲染时间。位图只是一般将事物缓存在内存中以提高性能的一个示例。
【讨论】:
【参考方案2】:不,我不这么认为,但 GDI+ 支持 PNG 以及其他几种格式。
【讨论】:
GDI+ 通过在打开 PNG 文件时将它们转换为位图来支持 PNG 文件,因此提问者仍然会面临他提到的大小问题。以上是关于我们可以在 GDI 中为 bitblt 使用 png 而不是位图吗?的主要内容,如果未能解决你的问题,请参考以下文章