获得CImage的子图像

时间:2010-11-13 22:07:59

标签: c++ mfc

我最近开始学习如何在Visual Studio中使用MFC。我的程序使用许多小的32x32像素图像,为方便起见,它们组合在一个大的.png中。我已经想出如何将大图像加载到CImage中并将其显示在CClientDC上,但我找不到任何可以帮助我将图像分割成那些较小的32x32图像的内容。

或者,我可以使用DevIL获取大图像的像素数据,但我找不到任何根据像素数据构建CImage的内容。

由于我几天前才开始学习MFC,我不太了解API,我可能会遗漏一些明显的东西。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

您需要使用CImage :: Draw()重载来指定源矩形。这样您就可以从原始图像中剪切要绘制的图像。有两个候选者,例如Draw(HDC hDestDC,const RECT& rectDest,const RECT& rectSrc)。另一个是此doc page上列出的第一个。

答案 1 :(得分:0)

如果您只是在GUI中使用多图标图像,通常您不想创建小图像。

当你来绘制图标时,将其偏移量和大小传递给bitblt函数而不是整个图像的尺寸。

如果您确实想要将子图像存储在位图中,请为目标位图创建一个内存DC并绘制到该位图中。

相关问题