• MFC图片控件(Picture、List Contrl)


    MFC图片控件Picture Control使用几个实例

    1、按钮选择图片显示到控件上

      为方便说明,本例子用PictureTest创建一个对话框,类名CPictureTestDlg,在CPictureTestDlg.h文件中申明CImage image;CString strFilePath;CString strFileName;再从工具箱中托一个Picture控件到对话框中,ID为IDC_STATIC,调整适当大小后再添加一个添加图片的按钮。如下图所示:

         

    为按钮添加事件处理程序代码:

     1 void CPictureTestDlg::OnBnClickedButton1()
     2 {
     3     // TODO: 在此添加控件通知处理程序代码
     4     //选择图片
     5     CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("imageFiles(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this);
     6     fileDlg.DoModal();
     7     //获取图片路径和图片名称
     8     strFilePath = fileDlg.GetPathName();
     9     strFileName = fileDlg.GetFileName();
    10     //判断路径不为空
    11     if (strFilePath == _T(""))
    12     {
    13         return;
    14     }
    15     image.Load(strFilePath);
    16     //以下两个矩形主要作用是,获取对话框上面的Picture Control的width和height,
    17     //并设置到图片矩形rectPicture,根据图片矩形rectPicture对图片进行处理,
    18     //最后绘制图片到对话框上Picture Control上面
    19     CRect rectControl;                        //控件矩形对象
    20     CRect rectPicture;                        //图片矩形对象
    21     int x = image.GetWidth();
    22     int y = image.GetHeight();
    23     //Picture Control的ID为IDC_IMAGE
    24     CWnd* pWnd = GetDlgItem(IDC_STATIC);
    25     pWnd->GetClientRect(rectControl);
    26     CDC* pDc = GetDlgItem(IDC_STATIC)->GetDC();
    27     SetStretchBltMode(pDc->m_hDC, STRETCH_HALFTONE);
    28     rectPicture = CRect(rectControl.TopLeft(), CSize((int)rectControl.Width(), (int)rectControl.Height()));
    29     ((CStatic*)GetDlgItem(IDC_STATIC))->SetBitmap(NULL);
    30     //以下两种方法都可绘制图片
    31     //image.StretchBlt(pDc->m_hDC, rectPicture, SRCCOPY); //将图片绘制到Picture控件表示的矩形区域
    32     image.Draw(pDc->m_hDC, rectPicture);                //将图片绘制到Picture控件表示的矩形区域
    33     image.Destroy();
    34     pWnd->ReleaseDC(pDc);
    35 }
    View Code

     运行效果:

        

    2、List Control控件显示文件列表

      从工具箱中拖拽一个ListCtrl控件到对话框中,添加变量为CListCtrl pListCtrl;

     1 BOOL CListControlDlg::OnInitDialog()
     2 {
     3     // TODO: 在此添加额外的初始化代码
     4     pListCtrl.DeleteAllItems();
     5     pListCtrl.InsertColumn(0, _T("文件名"), LVCFMT_CENTER, 120);
     6     pListCtrl.InsertColumn(1, _T("文件类型"), LVCFMT_CENTER, 100);
     7     pListCtrl.InsertColumn(2, _T("文件大小"), LVCFMT_CENTER, 100);
     8     pListCtrl.InsertColumn(3, _T("存放路径"), LVCFMT_LEFT, 500);
     9     //DWORD dwStyle = pListCtrl.GetExtendedStyle(); //获取当前扩展样式
    10     //dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(report风格时)
    11     //dwStyle |= LVS_EX_GRIDLINES; //网格线(report风格时)
    12     pListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); //设置扩展风格 LVS_EX_CHECKBOXES
    13     pListCtrl.DeleteAllItems();
    14     CFileFind finder;
    15     //建立CString对象,设置检索匹配字符串
    16     CString strWildcard(_T("C:\Users\Administrator\Desktop\imageFile"));
    17     strWildcard += _T("\*.*");
    18     //文件内部检索
    19     BOOL bWorking = finder.FindFile(strWildcard);
    20     int i; //用于定位字符,作为下标
    21     int index = 0;    //用于列表索引
    22     CString fontName, lastType, filepath, filename, filesize;//存储切割结果
    23     while (bWorking)
    24     {
    25         bWorking = finder.FindNextFile();
    26         filename = finder.GetFileName();
    27         //假设文件夹里面全是图片,获取图片文件长度
    28         int imageSize = finder.GetLength();
    29         if (filename != _T(".") && filename != _T(".."))
    30         {
    31             filepath = finder.GetFilePath();
    32             for (i = 0;i < filename.GetLength();i++)
    33             {
    34                 if (filename[i] == '.')
    35                 {
    36                     fontName = filename.Mid(0, i);
    37                     lastType = filename.Mid(i + 1, filename.GetLength());
    38                     filesize.Format(_T("%d"), imageSize / 1024);
    39                     filesize += "k";
    40                     pListCtrl.InsertItem(index, fontName);
    41                     pListCtrl.SetItemText(index, 1, lastType);
    42                     pListCtrl.SetItemText(index, 2, filesize);
    43                     pListCtrl.SetItemText(index, 3, filepath);
    44                 }
    45             }
    46             index++;
    47         }
    48     }
    49     finder.Close();
    50     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    51 }
    ListCtrl

    运行效果:

  • 相关阅读:
    C++课程学习笔记第六周:多态
    C++课程学习笔记第五周:继承
    C++课程学习笔记第四周:运算符的重载
    C++课程学习笔记第三周:类和对象提高
    C++课程学习笔记第一周:从C到C++
    C++课程学习笔记第二周:类和对象基础
    PyTorch的安装及学习资料
    PyTorch练手项目一:训练一个简单的线性回归
    PyTorch练手项目二:MNIST手写数字识别
    PyTorch练手项目四:孪生网络(Siamese Network)
  • 原文地址:https://www.cnblogs.com/geziyu/p/14084550.html
Copyright © 2020-2023  润新知