文档章节

MFC 在对话框显示图片的多种方法

吃一堑消化不良
 吃一堑消化不良
发布于 2016/02/16 18:59
字数 587
阅读 2K
收藏 2

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

(一) 非动态载入图片

方法1.先从最简单的开始,用picture 控件来实现. 

步骤: 

先在资源里Import一张图片,ID为IDB_BITMAP2 

然后在对话框上添加一个picture控件,右键点击打开属性, 

将type下拉框选择BITMAP,紧跟着下面就出现一个Image下拉框, 

拉开就会看到所有已经载入好的图片, 

选择你要的图片.运行程序即可看到.


方法2.通过背景图 

同样如上,先载入一张图片,ID为IDB_BITMAP2 

TestDlg.h中 

CBrush m_brBk;//在public中定义

TestDlg.cpp中,在初始化函数OnInitDialog()中加入: 

BOOL CTestDlg::OnInitDialog() 
{
    CDialog::OnInitDialog();
    CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP2);
    m_brBk.CreatePatternBrush(&bmp);
    bmp.DeleteObject(); 
    return TRUE;   // return TRUE   unless you set the focus to a control 
}

在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下:

HBRUSH   CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
    if (pWnd == this) 
    {
         return m_brBk; 
    } 
    return hbr; 
}


(二) 动态载入图片. 

方法3 图像控件(本例用KoDak 图像编辑控件) 

1.     首先应该保证系统中有这个控件。注意,它不能单独使用,必须和其他几个控件(特别是Imgcmn.dll)一同使用。如果没有,从别的机器上copy过来即可。这几个文件是Imgadmin.ocx,Imgcmn.dll,Imgedit.ocx,Imgscan.ocx,Imgshl.dll,Imgthumb.ocx,Imgutil.dll,把它们copy到windows\system目录下,然后用regsvr32.exe将它们分别注册。 

2.     打开工程,进入资源管理器,在对话框上单击右键,单击Insert Activex control… 选择Kodak图象编辑控件,大小任意。 

3.     在对话框上选中该控件,为其添加变量:m_ctrlPicture。

4.     在BOOL CTestDlg::OnInitDialog()添加如下: 

BOOL CTestDlg::OnInitDialog() 
{ 
      CDialog::OnInitDialog(); 
      m_ctrlPicture.SetImage("aa.jpg");   //保证图像在工程目录下,也可以写绝对路径 
      m_ctrlPicture.Display(); 
      return TRUE;   // return TRUE unless you set the focus to a control 
}

编译运行就OK了,此种方法的好处就是可能针对多种图像格式. 


方法4 通过CBitmap,HBITMAP,直接用OnPaint()绘制 

首先在CTestDlg类中声明一个变量: 

CBitmap   m_bmp

然后我们在对话框中加入一个picture 标签,名为IDC_STATIC1,然后: 

BOOL CDisplayPic::OnInitDialog() 
{ 

        CDialog::OnInitDialog(); 
        if( m_bmp.m_hObject != NULL )//判断 
            m_bmp.DeleteObject(); 

        //载入图片 
        HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), 
                     "c:\\aaa.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
        if( hbmp == NULL ) 
            return FALSE; 

        //该断程序用来取得加载的BMP的信息
        m_bmp.Attach( hbmp ); 
        DIBSECTION ds;
}


© 著作权归作者所有

吃一堑消化不良
粉丝 28
博文 188
码字总数 113563
作品 0
浦东
程序员
私信 提问
加载中

评论(0)

opencv3.x + MFC显示图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/byxdaz/article/details/88091164 opencv3.X + MFC显示图片 使用opencv和MFC显示图片的方法大致分为以下几种:...

byxdaz
2019/03/03
0
0
VS2010/MFC编程入门教程之目录和总结(鸡啄米)

鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事...

weixin_40647819
2018/05/23
0
0
CHtmlDialog(VC)

目录 CHtmlDialog 对话框与普通对话框的区别 事件处理映射宏 DDX 宏 C++ 与 javaSript 的相互调用 CDHtmlDialog 中 html 资源加载 css 样式,js 脚本,图片 CHtmlDialog 对话框与普通对话框的区...

kzangv
2012/12/02
0
0
MFC开发IM-自绘按钮控件,给按钮设置背景图片

MFC 基础知识:对话框背景添加图片和按钮Button添加图片 很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又...

golddaniu
2018/05/10
0
0
关于mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC工程,成功后会跳出一个对话框,直接在对话框上...

osc_wzff35x1
2018/08/16
2
0

没有更多内容

加载失败,请刷新页面

加载更多

程序远自我修养

详见: https://leohxj.gitbooks.io/a-programmer-prepares/content/pm/good-product-manager.html

郭恩洲_OSC博客
31分钟前
15
0
使用git clone命令克隆文件出现error: RPC failed相关错误

使用git clone命令克隆文件出现error: RPC failed; curl 18 transfer closed with outstanding read data remain问题 笔者最近在使用git clone命令从github克隆源码到电脑时出现了以下问题 ...

独钓渔
58分钟前
22
0
Java中JNI的使用详解第三篇:JNIEnv类型中方法的使用

在来看一下C++代码: #include<iostream.h> #include "com_jni_demo_JNIDemo.h" JNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHello (JNIEnv * env, jobject obj) { //获取obj中对象......

天王盖地虎626
今天
21
0
直播撬动618变局:抖快凶猛、商家清醒

  文/鸿键   来源:深响(ID:deep-echo)   核心要点   直播带货热潮持续升温,今年的传统电商大促节 618 成了第一个“全民直播”的 618,直播带货不仅为电商带来增量,同时也搅动着行...

计算无敌
今天
30
0
《一天一模式》— 观察者模式

一、观察者模式的概念 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题...

XuePeng77
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部