位图和位图按钮

显示一副位图的步骤:

1)  CBitmap bitmap;

Bitmap.LoadBitmap(..)   创建CBitmap对象,然后加载一个位图资源

2)  创建兼容DC

CDC dc;

dc.CreateCompatibleDC(..)

3)  将位图选入兼容DC

Bitmap.SelectObject(…)

4)        将兼容DC中的位图贴到当前DC

可以使用 Bitblt(。。),或者StretchBlt(…)

前者是11复制,当窗口不够大时,不会完全显示位图,但是后者可以根据位图大小,窗口大小自动调节,确保可以在窗口中完全显示位图

 

我们可以在窗口重绘的时候,显示位图

所以我们在视类的OnDrew函数中 添加如下代码

CBitmap bitmap;

       bitmap.LoadBitmap(IDB_BITMAP2);//加载位图

       BITMAP map;//这个结构体中包含了当前位图的信息

       bitmap.GetBitmap(&map);

      

       CDC dcCompatible;

       dcCompatible.CreateCompatibleDC(pDC);//创建兼容DC

      

       CBitmap *pOldobject;

       pOldobject=dcCompatible.SelectObject(&bitmap);//将位图选入兼容DC

      

       CRect rect;

       GetClientRect(&rect);//获取客户区

      

   // pDC->BitBlt(0,0, rect.Width(), rect.Height(), &dcCompatible,

      //0, 0, SRCCOPY);

       pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,map.bmWidth,map.bmHeight,SRCCOPY);//将兼容dc中的位图贴到当前DC

 

       dcCompatible.SelectObject(pOldobject);

 

这几个函数大家可以查看一下MSDN,不是很难的。。。

 

<>位图按钮

利用CBitmapButton类实现位图按钮

步骤:

1 选择这个按钮,查看属性->style->选择owener drew

2 定义一个变量  CBIitmapButton m_btn;

 注意:不能使用ClassWizard为按钮映射一个CButton变量,然后改为CBitmapButton
        
这么做并不能将按钮直接映射为CBitmapButton类的对象,反而会出现初始化错误

3:  使用CBitmapButton::LoadBitmaps装载各种状态的图片,
      
使用CBitmapButton::SubclassDlgItem关联到想要的按钮,

      
使用CBitmapButton::SizeToContent函数使按钮适合图片大小。
      
注意Loadbitmaps一定要在关联到按钮之前进行!

 

实例:

BOOL CBitmapbuttonDlg::OnInitDialog()

{

             。。。。。

             …….

m_btn.LoadBitmaps(IDB_BITMAP3);

       m_btn.SubclassDlgItem(IDC_BUTTON1,this);

       m_btn.SizeToContent();

      

       return TRUE;  // return TRUE  unless you set the focus to a control

}

 

给大家推荐一个网站 里边有很多常用图片 http://ui.okbase.net/

下载的图片是gif格式的,可以用acdsee 转换成bmp格式的

 

 

还有一种方法:(先把按钮属性 设置为style->bitmap

1) 给一个按钮绑定一个成员变量 右键按钮->class wizard->member variable->add variable

 

       2)

BOOL CBitmapbuttonDlg::OnInitDialog()

{

             。。。。。

             …….

//m_btn.LoadBitmaps(IDB_BITMAP3);

//     m_btn.SubclassDlgItem(IDC_BUTTON1,this);

//     m_btn.SizeToContent();

HBITMAP hbmp2=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3));

       m_btn2.SetBitmap(hbmp2);

      

       return TRUE;  // return TRUE  unless you set the focus to a control

}

 

这种方法 效果不是很好。。。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值