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

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

  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/KeepThreeMunites/p/13370067.html
Copyright © 2011-2022 走看看