注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

伯纳乌の夢

可以挽回么?我们按“ Ctrl+Z”撤销掉吧。对不起啦~~

 
 
 

日志

 
 
 
 

VC对话框加载位图图片  

2008-05-12 22:12:13|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在对话框里加载图片可以使对话框背景丰富多彩,不会太过单调。

首先,创建一个全局变量:CBitmap m_bmMainBk;

然后在对话框启动后自动根据图片的大小来改变对话框的尺寸:

BOOL CxxxDlg::OnInitDialog(){

    CDialog::OnInitDialog();

    CenterWindow();    //窗体启动后,使窗体居中显示

    m_bmMainBk.LoadBitmap(IDB_BITMAP1);    //载入位图资源

    BITMAP bm;

    m_bmMainBk.GetObject(sizeof(BITMAP),&bm);    //获得位图宽度、高度、颜色信息

    MoveWindow(0,0,bm.bmWidth,bm.bmHeight);    //改变窗体大小和尺寸

 return TRUE;

}

void CxxxDlg::OnPaint() {
    CClientDC dc(this);
    CDC dcMem;
    dcMem.CreateCompatibleDC(&dc);    //创建可兼容的内存DC
    CBitmap *pOldBitmap = dcMem.SelectObject(&m_bmMainBk);    // 把一个对象(位图、画笔、画刷等)选入指定的设备描述表,只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
    CRect rcClient;
    GetClientRect(&rcClient);    //获得客户区大小
    dc.BitBlt(rcClient.left,  rcClient.top, rcClient.Width(), rcClient.Height(),   &dcMem, 0, 0, SRCCOPY);

//将内存中的图拷贝到屏幕上进行显示   BitBlt()双缓冲解决图象闪烁  

    dcMem.SelectObject(pOldBitmap);
    dcMem.DeleteDC();

    CDialog::OnPaint();
}

  评论这张
 
阅读(106)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017