想在一个对话框的picture里画图,IDC_PIC是picture的id号
    CStatic *pStatic=(CStatic*)GetDlgItem(IDC_PIC);
    CRect rect;
    pStatic->GetWindowRect(&rect);
    pStatic->ScreenToClient(&rect);
    CDC *pDC=pStatic->GetDC();
这样继续画图的时候,如果图形的坐标超出了picture的范围,图形就会画出picture范围以外,怎么把图限制在picture里

解决方案 »

  1.   

    设置剪裁区CRgn,再调用CDC::SelectClipRgn()
      

  2.   


    void CMyJDlg::OnButton12() //在picture控件中装载图片
    {
    CBitmap hbmp;
    HBITMAP hbitmap;
    //将pStatic指向要显示的地方
    CStatic *pStatic;
    pStatic=(CStatic*)GetDlgItem(IDC_PIC);//IDC_PIC为图片控件ID
    CString strpicname = "CloseButtonDown.jpg";
    //装载资源
    hbitmap=(HBITMAP)::LoadImage(NULL,strpicname,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//strpicname为图片的名字
    hbmp.Attach(hbitmap);
    //获取图片格式
    BITMAP bm;
    hbmp.GetBitmap(&bm);
    CDC dcMem;
    dcMem.CreateCompatibleDC(GetDC());
    CBitmap *pOldBitmap=(CBitmap*)dcMem.SelectObject(hbmp); CRect lRect;
    pStatic->GetClientRect(&lRect);
    //显示位图
    //ScreenToClient(&lRect);
    pStatic->GetDC()->StretchBlt(lRect.left,lRect.top,lRect.Width(),lRect.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    dcMem.SelectObject(&pOldBitmap);
    }