函数功能说明:
使用StretchBlt函数实现内存中图片的缩放,避免重新加载图片文件。
void PutImageZoom(int x, int y, int w, int h, IMAGE* srcImg)
{
// 创建目标尺寸的兼容DC用于缩放操作
IMAGE destImg(w,h);
// 设置缩放模式为高质量
SetStretchBltMode(GetImageHDC(&destImg), HALFTONE);
// 使用StretchBlt进行高质量缩放
StretchBlt(GetImageHDC(&destImg), 0, 0, w, h, GetImageHDC(srcImg), 0, 0, srcImg->getwidth(), srcImg->getheight(), SRCCOPY);
*srcImg = destImg;
putimage(x, y, srcImg);
}
示例
#include <easyx.h>
void PutImageZoom(int x, int y, int w, int h, IMAGE* srcImg)
{
// 创建目标尺寸的兼容DC用于缩放操作
IMAGE destImg(w,h);
// 设置缩放模式为高质量
SetStretchBltMode(GetImageHDC(&destImg), HALFTONE);
// 使用StretchBlt进行高质量缩放
StretchBlt(GetImageHDC(&destImg), 0, 0, w, h, GetImageHDC(srcImg), 0, 0, srcImg->getwidth(), srcImg->getheight(), SRCCOPY);
*srcImg = destImg;
putimage(x, y, srcImg);
}
int main()
{
// 初始化图形窗口
initgraph(600,600);
// 加载原始图片到内存(假设图片名为"01.png")
IMAGE img;
loadimage(&img, _T("01.png"));
PutImageZoom(0,0,20,36,&img);
while(1);
closegraph();
return 0;
}