【发布时间】:2010-01-14 21:00:30
【问题描述】:
如果您将图像存储在 CImageList 中,是否有一种简单的方法可以将它们(具有适当的透明度)缩放以适合给定的目标矩形? CImageList::DrawEx 获取大小信息,但我不相信它会缩放,只会裁剪?
【问题讨论】:
标签: mfc
如果您将图像存储在 CImageList 中,是否有一种简单的方法可以将它们(具有适当的透明度)缩放以适合给定的目标矩形? CImageList::DrawEx 获取大小信息,但我不相信它会缩放,只会裁剪?
【问题讨论】:
标签: mfc
我猜你可以将它们渲染到屏幕外位图,然后 StretchBlt() 将它们渲染到你的设备或另一个屏幕外位图,让 StretchBlt() 进行缩放...虽然要正确传递透明度需要一些摆弄,根据您的情况,您可能需要改用 AlphaBlend()。
我的观点是大多数 Win32 图像处理代码,因此通过扩展它们的 MFC 等价物,如 CImageList、CIcon、CImage、CBitmap ......不足以满足当今的图形需求。尤其是处理每像素透明度几乎无法始终如一地工作。我通常将我的图像存储在 CImage 中并在任何地方使用 ::AlphaBlend() 将它们获取到 DC,或者我使用 GetDIBits()/SetDIBits() 并直接操作 RGBA 条目(对于进行缩放和类似操作不太实用,我承认)。另一方面,我理解必须维护已经使用这些东西的代码并希望更新它们以赋予它们一些现代外观的感觉......
【讨论】: