设置窗口的背景图片

本文介绍了两种设置窗口背景图片的方法:在OnPaint中处理和响应OnEraseBkgnd消息。然而,这两种方法可能导致窗口大小变化时背景图片显示不正确或失真的问题。为解决这个问题,需要添加OnSize事件来重新绘制背景。同时,当图片比窗口大时,StretchBlt函数会导致图片失真,目前尚无理想解决方案。
摘要由CSDN通过智能技术生成

网上设置背景图片有2种方法:

第一种直接是在OnPaint中加入:

 

 

直接在CXXXDlg(要操作的对话框类)的CXXXDlg::OnPaint()函数中的if…else中的else{CDialog::OnPaint();}改成如下代码:注意CDialog::OnPaint();这句一定要去掉了

 else
 { 

  CPaintDC dc(this);

  CRect rect;
  GetClientRect(&rect);
  CDC dcMem;
  dcMem.CreateCompatibleDC(&dc);
  CBitmap bmpBackground;
  bmpBackground.LoadBitmap(IDB_BEIJING);
  //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);

}

 

另外一种是添加消息:OnEraseBkgnd

BOOL CXXXDlg::OnEraseBkgnd(CDC* pDC)
{

//背景图片
    //获得客户区尺寸
    CRect rect;
    GetClientRect(&rect);
    //加载背景位图
    CBi

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值