• 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

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

  • 相关阅读:
    循环神经网络
    第四次作业:卷积神经网络 part 3
    《Strip Pooling: Rethinking Spatial Pooling for Scene Parsing》——笔记
    《Selective Kernel Networks》——笔记
    《Non-local Neural Networks 》——笔记
    HybridSN中添加SE模块
    第三次作业:卷积神经网络 part 2
    第一次作业:深度学习及pytorch基础
    需要背的板子
    Codeforces 1474F. 1 2 3 4 ... 题解
  • 原文地址:https://www.cnblogs.com/KeepThreeMunites/p/13370067.html
Copyright © 2020-2023  润新知