zoukankan      html  css  js  c++  java
  • MFC对话框项目,给对话框插入背景图

    近期在做一个MFC的项目工程,MFC对话框的搭建基本已经完成,现在要求给对话框加上背景图片,上网查找了一些方法,最后实现了这个功能,现在对实现过程中采用的方法及过程进行一个总结。

    首先,在头文件中包含一个新的头文件

    #include <gdiplus.h>

    然后再*Dlg.h中添加命名空间,注意这个命名空间在类定义的外部添加

    using namespace Gdiplus;

    然后在Dlg类的定义中添加下面的变量定义

    GdiplusStartupInput m_GdiplusStarupInput;

    Gdiplus::Image* m_img;//这里的Gdiplus::也可以不加,因为前面已经定义了命名空间了

    在Dlg.cpp中包含使用的库文件

    #pragma comment(lib,"gdiplus.lib")

    在构造函数中添加下面的语句

    GdiplusStartup(&m_uGdiplusToken, &m_GdiplusStarupInput, nullptr);

    在析构函数中添加下面的语句

    GdiplusShutdown(m_uGdiplusToken);

    在Dlg Init方法中导入要加载的图片

    char buf[32] = "";
    sprintf_s(buf, ".\res\BackPic.jpg");//这里使用的是相对路径,建议使用相对路径,这样可执行文件在别的路径中打开时,只要相对路径下有图片资源就可以成功

    //加载图片,否则执行exe文件,图片不能显示出来

    CStringW s; //转为宽字符
    s = buf;
    m_img = Gdiplus::Image::FromFile(s); //加载图片,加断点调试,若图片加载成功则m_img不为空

    最后在Onpaint函数中添加下面的代码

    else//else前面的代码不用修改,只修改else语句中的内容
    {
    //CDialogEx::OnPaint();
    CPaintDC dc(this);
    CRect rect = { 0 };
    GetClientRect(&rect); //获取客户区大小
    Graphics g(dc);
    g.DrawImage(m_img, 0, 0, rect.Width(), rect.Height());

    }

    至此图片加载的整个代码流程就结束了,这是我背景图的一部分,图片是根据对话框的尺寸进行了拉伸,图片的清晰度降低了

     我参考了CSDN的两个资源,链接如下:

    https://blog.csdn.net/qq_18297675/article/details/58661363

    https://blog.csdn.net/qq_18297675/article/details/51050184

    这位仁兄提出了三种方法,我都尝试了一下,一三没问题,方法二没实现,原因还没找到

  • 相关阅读:
    Python-time和datetime模块
    Python-hashlib模块
    Python-利用flask模块创建web接口
    Python-操作Excel
    2
    1
    8
    7
    HDFS元数据管理实战篇
    使用HttpFS网关从防火墙后面访问HDFS
  • 原文地址:https://www.cnblogs.com/KeepThreeMunites/p/13370067.html
Copyright © 2011-2022 走看看