我最近开始学习如何在Visual Studio中使用MFC。我的程序使用了许多小的32x32像素的图像,为了方便起见,它们被放在一个大的.png中。我已经知道如何将大图像加载到CImage中并在CClientDC上显示它,但我找不到任何可以帮助我将图像拆分成较小的32x32图像的方法。
或者,我可以使用DevIL获取大图像的像素数据,但我找不到任何可以从像素数据构造CImage的东西。
因为我几天前才开始学习MFC,所以我对API不是很了解,我可能遗漏了一些明显的东西。有谁能给我指个方向吗?
发布于 2010-11-14 06:40:52
您需要使用CImage::Draw()重载来指定源矩形。这样您就可以从原始图像中剪裁要绘制的图像。有两个候选者,例如Draw(HDC hDestDC,const RECT& rectDest,const RECT& rectSrc)。另一个是此doc page上列出的第一个。
发布于 2010-11-14 06:20:07
通常,如果您只是在GUI中使用多图标图像,则不希望创建小图像。
当你绘制图标时,将它的偏移量和大小传递给bitblt函数,而不是整个图像的尺寸。
如果您确实希望在位图中存储子图像,请为目标位图创建一个内存DC并绘制到该DC中。
https://stackoverflow.com/questions/4174986
复制相似问题