zoukankan      html  css  js  c++  java
  • VC++编程之对话框贴图

       基于对话框的程序写好后,为对话框贴上个图片让界面更加美观(我承认做界面,MFC显得力不从心,不如QT)。

    其实很简单,我们以位图为例,选好我们需要的位图资源(bmp),假若自己的图片不是位图资源,可以通过一些图片修改软件获得(PS)。打开我们的程序,在资源视图下,右键添加资源,把我们选中的位图导入到编译器中。

      然后在C ..DLG类中,在会话(OnPaint)中添加如下代码,解释下原因:在对话框建立是,会调用绘画函数,此时我们在此函数中禁用默认的重绘基类,使用自己的重绘代码,即可。

      运行后就可以看到对话框上贴了一层图片。当然这只是最简单的方法,其间有很多问题,比如说,画面会走形(除非是纯色的图片),控件与贴图不能很好复合(例如静态文本框,看起来很别扭),还有待改进。

    添加的代码

    void CtestDlg::OnPaint()
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // 用于绘制的设备上下文
    
    		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
    
    		// 使图标在工作区矩形中居中
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// 绘制图标
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else   //以上的代码MFC默认的对话框代码,我们在只在下面进行改动
    	{
    		//CDialogEx::OnPaint();
    		//CDialog::OnPaint();//要禁止这个调用   
            <strong>  CPaintDC   dc(this);   
              CRect   rect;   //定义一个矩形
              GetClientRect(&rect);   //获取对话框的大小
              CDC   dcMem;   //定义一个绘画句柄
              dcMem.CreateCompatibleDC(&dc);   
              CBitmap   bmpBackground;   
              bmpBackground.LoadBitmap(IDB_BITMAP2);   //加载位图资源
                      //IDB_BITMAP是你自己的图对应的ID   
              BITMAP   bitmap;   
              bmpBackground.GetBitmap(&bitmap);   
              CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);   
              dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,   
             bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);   //函数从源矩形中复制一个位图到目标矩形
    		  //必要时按目标设备设置的模式进行图像的拉伸或压缩</strong>
    	}
    }


  • 相关阅读:
    多线程批量插入数据到数据库
    分分钟搞定redis
    Eclipse中JS文件红叉处理
    springmvc基础篇—处理图片静态资源文件
    springmvc基础篇—使用注解方式为前台提供数据
    springmvc基础篇—拆分配置文件
    springmvc基础篇—通过注解的方式去配置项目
    springmvc基础篇—修改默认的配置文件名称及位置
    springmvc基础篇—掌握三种控制器
    springmvc基础篇—掌握三种处理器
  • 原文地址:https://www.cnblogs.com/zhangruilin/p/5769832.html
Copyright © 2011-2022 走看看