使用GDI存储,拉伸和显示位图的最佳方法是什么?

时间:2013-09-11 17:32:29

标签: c++ windows winapi gdi

我不是一个Windows编程专家;)所以如果这个问题很简单,请原谅。

我有一个窗口,我想在其上显示位图。位图可以拉伸到整个区域,也可以显示原始宽高比,空白区域将用实心画笔填充。

我使用LoadImage加载位图并使用BitBlt显示它。我在WM_ERASEBKGND上做,我使用来自wparam的DC,这是一个mem DC。

我想在需要拉伸位图时使用StretchBlt而不是BitBlt。

所以我的问题是:

  • 可以将位图存储为HBITMAP,还是应该使用DIBSection?哪一种性能更好,两种解决方案的内存占用量是多少?

  • 我应该在绘制WM_ERASEBKGND上的DC时始终拉伸位图,还是应该使用预先计算的拉伸位图创建兼容的DC(或位图),然后将BitBlt创建到目标DC?

  • 如果我创建一个预先计算的位图,我应该立即卸载原始位图以保存在内存中吗?

  • 我应该使用BitBlt / StretchBlt还是CopyImage?

  • 我读到我也可以使用具有所需宽度和高度参数的LoadImage,以便加载的图像已经拉伸,这个解决方案更好吗?

我非常感谢一些代码示例。

修改

GDI +解决方案也是受欢迎的。我对这个问题的最佳,最简单和最佳性能解决方案感兴趣。

0 个答案:

没有答案