c++ - 如何使图片适合静态控件 vc++ win32

标签 c++ c winapi

你能告诉我如何使图片适合静态控件吗,我的意思是如果你创建一个用于查看图片的静态控件并且如果图片质量或图片大小大于控件那么它会重新调整静态控件的大小与图片的大小。我可以创建控件并将图片设置为正确。但我不知道如何让它适合控制。这就是我创建控件并为其设置图片的方式。

代码:

HWND static_con(HWND hWnd, HINSTANCE hInst){
    HWND Static_Pic;

    Profile_Pic = CreateWindow("STATIC", NULL, SS_BITMAP|WS_CHILD|WS_VISIBLE|WS_TABSTOP, 5,5,33,33, hWnd, NULL, hInst, NULL);
    HBITMAP hBmp = (HBITMAP)LoadImage(NULL, "camera1.jpg", IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    if(hBmp == NULL){
        MessageBox(NULL, "Error while loading image", "Error", MB_OK|MB_ICONERROR);
    }
    SendMessage(Static_Pic, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBmp);
    return 0;
}

然后我调用 WM_CREATE 处理程序中的函数成功创建它,但现在我不知道如何使其适合控件,如果你能告诉我如何使图片适合控件,我将不胜感激。

最佳答案

您可以使用 SS_REALSIZECONTROL 来自 Microsoft 的文档。

SS_REALSIZECONTROL - Adjusts the bitmap to fit the size of the static control.

您也可以手动缩放图像。使用 GetWindowRect() 获取图像要到达的控件的大小,然后使用 StretchBlt() 缩放图像,使其尺寸与源尺寸匹配,然后执行 STM_SETIMAGE。

关于c++ - 如何使图片适合静态控件 vc++ win32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936340/

相关文章:

C传递结构数组,数组类型有不完整的元素类型

c++ - SetWindowPos 是否立即绘制

c++ - 即使我在着色器中使用了变量,glGetUniformLocation也会返回-1

c++ - 类指针内存问题

c++ - 以二进制形式打印文件

c - OSX 上的 SIGTTOU/SIGTTIN 调用 tcsetpgrp()

c++ - 如何在 C++ 中消除可变参数函数与另一个函数的歧义

c++ - 如何将对象添加到 std::vector<unique_ptr<obj>>?

c++ - CreateProcessAsUser 生成错误 5

visual-studio-2010 - 自重启应用程序在某些情况下崩溃