我在Dialog中添加了一个Pictrue控件(类型为CStatic),Type为“Bitmap”,请问各位如何在显示一幅较大的图的时候,把它完全显示在一个指定的区域内?
我只写了:
HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL,"E:\\aaa.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_ctrlPictrue.SetBitmap(hBitmap);

解决方案 »

  1.   

    先建一个DC,再读入一个HBITMAP,再用CDC::StretchBlt缩放DC,再写入控件。
      

  2.   

    大致如此:
    //加载位图
    CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BITMAP1);
    BITMAP bi;
    bitmap.GetBitmap(&bi);
    //选中位图
    CDC memDC;
    memDC.CreateCompatibleDC(GetDC());
    memDC.SelectObject(&bitmap);
    //缩放绘图
    CRect rect;
    m_static.GetClientRect(&rect);
    m_static.GetDC()->StretchBlt(
    0,0,rect.Width(),rect.Height(),
    &memDC,
    0,0,bi.bmWidth,bi.bmHeight,SRCCOPY);