c++控件加载图片

本文介绍了如何在Windows程序中使用CImage库加载图片,获取其尺寸,并将图片拉伸适应PictureControl控件的客户区显示的过程,涉及到GetDC、SetStretchBltMode和StretchBlt等函数。
摘要由CSDN通过智能技术生成

    CImage image;
    int cx, cy;
    RECT rect;
    // 获取当前工作目录
    HMODULE hModule = GetModuleHandle(NULL);
    WCHAR modulePath[MAX_PATH];
    GetModuleFileName(hModule, modulePath, MAX_PATH);

    // 提取目录部分作为当前工作目录
    WCHAR currentDir[MAX_PATH];
    wcscpy_s(currentDir, modulePath);
    PathRemoveFileSpec(currentDir);

    // 拼接相对路径
    WCHAR filePath[MAX_PATH];
    swprintf(filePath, MAX_PATH, L"%s\\%s", currentDir, fileName);
    // 根据路径载入图片  
    image.Load(filePath);
    // 获取图片的宽高
    cx = image.GetWidth();
    cy = image.GetHeight();

    HWND hWndPic = GetDlgItem(hWnd, IDC_gongshi); // 获取控件句柄
    // 获取Picture Control控件的客户区
    GetClientRect(hWndPic, &rect);

    HDC hdc = GetDC(hWndPic);
    // 设置指定设备环境中的位图拉伸模式
    int oldStretchMode = SetStretchBltMode(hdc, STRETCH_HALFTONE);
    // 从源矩形中复制一个位图到目标矩形,按目标设备设置的模式进行图像的拉伸或压缩
    image.StretchBlt(hdc, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, SRCCOPY);
    SetStretchBltMode(hdc, oldStretchMode);
    ReleaseDC(hWndPic, hdc);

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CAD GIS开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值