如果您将图像存储在CImageList中,是否有一种简单的方法来渲染它们(具有适当的透明度),以缩放以适合给定的目标矩形? CImageList :: DrawEx需要大小信息,但我不相信它会缩放,只是裁剪?
答案 0 :(得分:4)
我猜你可以将它们渲染到屏幕外的位图,然后将StretchBlt()渲染到你的设备或其他屏幕外位图,让StretchBlt()进行缩放...让透明度正确地进行将需要一些摆弄,根据您的具体情况,您可能需要使用AlphaBlend()。
我的观点是,大多数Win32图像处理代码,因此通过扩展他们的MFC等价物,如CImageList,CIcon,CImage,CBitmap,......不足以满足当今的图形需求。特别是处理每像素透明度几乎不能始终如一。我通常将我的图像存储在CImage中并使用:: AlphaBlend()到处将它们转换为DC,或者我使用GetDIBits()/ SetDIBits()并直接操作RGBA条目(对于进行缩放和类似操作不是很实用,我承认)。另一方面,我理解维护使用这些东西的代码并希望更新它们以使它们具有现代外观的感觉......