c++ - 获取 CImage 的子图像

标签 c++ mfc

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

或者,我可以使用 DevIL 获取大图像的像素数据,但我找不到任何可以从像素数据构造 CImage 的东西。

因为我几天前才开始学习 MFC,所以我对 API 不是很了解,而且我可能遗漏了一些明显的东西。谁能指出我正确的方向?

最佳答案

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

关于c++ - 获取 CImage 的子图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4174986/

相关文章:

c++ - 我怎样才能打破这个 std::shared_ptr 引用循环?

c++ - 为什么我可以为字符串重载 istream 的 operator>>?

c++ - 为什么函数模板不理解 NULL 但可以使用 nullptr?

c++ - MFC - UpdateData(False) + 线程 + 调试断言失败

c++ - 如何在 Turbo C++ 中将整数作为命令行参数传递

c++ - 我不明白使用sse的代码在哪里有问题

c++ - 如何让 MFC 应用程序从命令行阻止?

visual-studio-2010 - Visual Studio 2010 MFC 对话框 : Aero style?

visual-c++ - MFC 的 GetClientRect 和 MoveWindow 不保留大小?

c++ - 删除列表控件 (MFC) 中的重复项