在MDI主框架窗口中添加位图(在视中加载位图)

要在视图中显示位图,难点在于控件需要自己添加,位置要自己定。在MDI中添加位图有如下几个步骤:

  • 首先添加一个显示控件。这里的添加和其他控件的添加相类似。

有两个地方可以添加代码来创建控件:CtestMDIView::OnCreate 和 CtestMDIView::OnInitialUpdate。CtestMDIView::OnCreate 的执行点比较靠先。这里我为了自己的需要选择了在CtestMDIView::OnInitialUpdate中创建控件

 GetClientRect(Rect);
 // add picture wide = 50 height = 100
 myRect = Rect;
 myRect.bottom = myRect.top + 100;
 myRect.left = myRect.right + 20;

 m_PicShow.Create( "Picture Show", WS_CHILD|WS_VISIBLE|WS_BORDER,
  CRect(Rect.right + 500,Rect.top + 20,Rect.right + 100,Rect.top + 120), this, 12002 );

  • 其次,为显示控件增加移动代码,以便响应窗口变化。即在

void CtestMDIView::OnSize(UINT nType, int cx, int cy)
{
 CRect Rect;
 CView::OnSize(nType, cx, cy);
 if(canSize){
  GetClientRect(Rect);
  m_PicShow.MoveWindow()
 }
}

其实加载显示位图位图并不象如上这么复杂,只需要加载并在OnPaint()或OnDraw中显示就可以了,代码如下

 CPaintDC dc(this);
 OnPrepareDC(&dc);
 OnDraw(&dc);

 CBitmap cBitmap;
 BITMAP bitMap;
 CDC dcMem;

 dcMem.CreateCompatibleDC(&dc);

 cBitmap.LoadBitmap( IDB_PLAY1 );
 cBitmap.GetBitmap(&bitMap);

 CBitmap *pbmpOld=dcMem.SelectObject(&cBitmap);
 dc.StretchBlt( m_rectPicLoc.left,m_rectPicLoc.top,
  m_rectPicLoc.right - m_rectPicLoc.left,
  m_rectPicLoc.bottom - m_rectPicLoc.top,
  &dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);


其中IDB_PLAY1即要显示的图片资源。

这里是将图片加入资源来显示,适用于图片预先已知。若图片未知,则可用LoadBitmap打开图像,然后以同样的方式显示

另外还可以用Bltblt来显示图片,以加快速度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值