我不是一个Windows编程专家;)所以如果这个问题很简单,请原谅。
我有一个窗口,我想在其上显示位图。位图可以拉伸到整个区域,也可以显示原始宽高比,空白区域将用实心画笔填充。
我使用LoadImage加载位图并使用BitBlt显示它。我在WM_ERASEBKGND上做,我使用来自wparam的DC,这是一个mem DC。
我想在需要拉伸位图时使用StretchBlt而不是BitBlt。
所以我的问题是:
可以将位图存储为HBITMAP,还是应该使用DIBSection?哪一种性能更好,两种解决方案的内存占用量是多少?
我应该在绘制WM_ERASEBKGND上的DC时始终拉伸位图,还是应该使用预先计算的拉伸位图创建兼容的DC(或位图),然后将BitBlt创建到目标DC?
如果我创建一个预先计算的位图,我应该立即卸载原始位图以保存在内存中吗?
我应该使用BitBlt / StretchBlt还是CopyImage?
我读到我也可以使用具有所需宽度和高度参数的LoadImage,以便加载的图像已经拉伸,这个解决方案更好吗?
我非常感谢一些代码示例。
修改
GDI +解决方案也是受欢迎的。我对这个问题的最佳,最简单和最佳性能解决方案感兴趣。