Easyx图形库函数功能扩展(1)-动态缩放图片

函数功能说明:

使用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;
}
posted @ 2026-01-09 20:22  让泪化作相思雨  阅读(17)  评论(0)    收藏  举报