CRect rcDIB;
        GetClientRect(&rcDIB);
        pDC->SetMapMode(MM_ANISOTROPIC);
        //使坐标的原点位于窗口的中心
        pDC->SetViewportOrg(rcDIB.right/2,rcDIB.bottom/2);
        pDC->SetViewportExt(rcDIB.right,rcDIB.bottom);
        pDC->SetWindowOrg(0,0);
        pDC->SetWindowExt(3000,-3000);
       
        //获取DIB宽度
int CXDIB=(int)::DIBWidth(LpDIB);
//获取DIB高度度
int CYDIB=(int)::DIBHeight(LpDIB);
        //编码使DIB在RECT中居中显示!
        rcDIB.top=CXDIB/2;
        rcDIB.left=-CYDIB/2;
        rcDIB.right=CYDIB/2;
        rcDIB.bottom=-CXDIB/2;
        //这一句应该怎么写,偶不会
        rcDIB.CenterPoint=(0,0);

解决方案 »

  1.   

    1,在头文件中定义:
    CBitmap* m_pBitmap;//位图
    BITMAP m_bmpInfo; //位图信息(大小等)  2,在afx_msg BOOL OnEraseBkgnd(CDC* pDC)中:    //获得客户区大小
    CRect rc;
    GetClientRect(&rc);
    CClientDC dc(this);
    OnPrepareDC(&dc);
    dc.LPtoDP(&rc);
    CDC dcMem;
    HBITMAP hbit;
    dcMem.CreateCompatibleDC(&dc);
    hbit = (HBITMAP)dcMem.SelectObject(m_pBitmap);
    //获得位图信息
    m_pBitmap->GetObject(sizeof(BITMAP),&m_bmpInfo); //把整个位图在客户区中心显示
    GetDC()->StretchBlt(rc.left+10,rc.top+10,rc.right-rc.left-20,rc.bottom-rc.top-20,&dcMem,0,0,m_bmpInfo.bmWidth,m_bmpInfo.bmHeight,SRCCOPY);
    DeleteDC(dcMem);
      

  2.   

    你需要进行相应的更改,我是bitmap,而你是dib.