VC6.0中怎样根据操作在图像控件中显示图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC6.0中怎样根据操作在图像控件中显示图片相关的知识,希望对你有一定的参考价值。

比如鼠标点击了单选框,控件的位置就会出现一张图片,选另一个单选就会出现另一张图片~~图片就是载入资源里的~

这个简单,看代码:
CStatic *st=(CStatic*)GetDlgItem(IDC_PIC);//IDC_PIC是图片控件的ID,此处建议将默认的ID(即IDC_STATIC)改成其他的,比如说这里的IDC_PIC
HBITMAP hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));//加载IDB_BITMAP1
st->SetBitmap(hBitmap);//设置位图显示
以上实现的就是代码控制位图在图片控件上的显示了,你只要分别在两个单选按钮里加载不同的位图就可以了。
参考技术A 什么语言啊追问

VC++ MFC

追答

不好意思啊 我对这个不太熟悉

参考技术B 拖进去一个控件pictures控件,然后在按钮的click函数中填写代码,你可以设置一个全局变量来记录点击按钮的次数,比如说奇数就隐藏,偶数就显示。
追问

你这个我在某个答案里看到过哦~复制黏贴是不对的~

在运行时将图像加载到对话框图片控件中

【中文标题】在运行时将图像加载到对话框图片控件中【英文标题】:Loading an image into a dialog picture control during runtime 【发布时间】:2014-01-23 05:35:57 【问题描述】:

我最近购买了一台具有高 dpi 屏幕的笔记本电脑,并且一直在调整我的一个程序以利用更高的分辨率。在我的一个 Win32 对话框中,我显示了一张位图图片。通常我通过资源编辑器将其分配给图片控件,而不必处理它。现在我需要根据屏幕分辨率显示两个图像之一。我知道如何加载位图并获取其句柄,但是如何在对话框启动期间将其分配给图片控件,以便内置对话框例程显示它?我想我应该在对话框中放置一个静态图片控件,但是我找不到一个 win32 示例来说明如何在运行时将图像分配给该图片控件。似乎应该很简单,但我似乎找不到合适的 windows 功能。我没有使用 MFC。

--特里

【问题讨论】:

如果您可以显示当前代码是什么,那么建议更改会更容易。 【参考方案1】:

这是一个例子。基本上,您需要将 STM_SETIMAGE 消息连同您要显示的图像的句柄一起发送到图片控件。

#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include "resource.h"

HINSTANCE hInst;

BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)

    static HBITMAP bmp1, bmp2;
    static bool isImg1 = true;

    switch(uMsg)
    
        case WM_INITDIALOG:
            bmp1 = (HBITMAP)SendDlgItemMessage(hwndDlg, IDC_STATIC1, STM_GETIMAGE, IMAGE_BITMAP, 0);
            bmp2 = (HBITMAP)LoadImage(NULL, "bitmap2.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
            return TRUE;

        case WM_DESTROY:
            DeleteObject(bmp1);
            DeleteObject(bmp2);
            return true;

        case WM_CLOSE:
            EndDialog(hwndDlg, 0);
            return TRUE;

        case WM_COMMAND:
            switch(LOWORD(wParam))
            
                case IDC_BTN_QUIT:
                    EndDialog(hwndDlg, 0);
                    return TRUE;

                case IDC_BTN_TEST:
                    if (isImg1)
                        SendDlgItemMessage(hwndDlg, IDC_STATIC1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)bmp2);
                    else
                        SendDlgItemMessage(hwndDlg, IDC_STATIC1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)bmp1);
                    isImg1 = !isImg1;
                    return TRUE;
            
    
    return FALSE;



int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

    hInst = hInstance;

    // The user interface is a modal dialog box
    return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DialogProc);

【讨论】:

【参考方案2】:
    从资源中加载位图 向优化校准发送消息

case IDC_BUTTON_RELOAD:
        hbitmap = (HBITMAP)LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP_FULL));
        hbitmap2 = (HBITMAP)LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP_EMPTY));
        /*hdc = GetDC(hDlg);
        image_dc = CreateCompatibleDC(hdc);
        old_hbitmap = (HBITMAP)SelectObject(image_dc,hbitmap);
        BitBlt(hdc,1,0,530,450,image_dc,0,0,SRCCOPY);*/
        SendMessage(GetDlgItem(hDlg,IDC_STATIC_PICTURE2), STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hbitmap);
        SendMessage(GetDlgItem(hDlg,IDC_STATIC_PICTURE), STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hbitmap2);
        return TRUE;
case IDC_BUTTON_EXIT:
        MessageBox(hDlg,_T("Thank you"),_T("Close"),MB_ICONINFORMATION|MB_OK);
        DeleteObject(hbitmap);
        DeleteObject(hbitmap2);
        DestroyWindow(hDlg);
        return TRUE;

【讨论】:

以上是关于VC6.0中怎样根据操作在图像控件中显示图片的主要内容,如果未能解决你的问题,请参考以下文章

VC6.0把显示在对话框中的图像另存为bmp图片在电脑D盘

vc6,0下opencv编译通过但不安正常显示图片,显示窗口成灰色,并没有图片存在是啥原因?怎样解决

VC6.0,如何从sql2000数据库中的某个表读取时间数据,显示在DateTimePicker控件上

在运行时将图像加载到对话框图片控件中

ImageView显示图像控件

matlab GUI-图像输入与输出的简单例子