我想在在窗口中显示很多张图片,我想以他们左上角的坐标为基准进行图像保存,可是我不知道在哪里修改这个左上角值的设定。这是我保存图像的代码 int xcount = 0;//每行几张图片
int ycount = 0;//多少行

for (int i = 0 ; i < file_num ; i++)
{
CClientDC dc(this);
CBitmap bmpForSave;
CDC cdcForSave;
                                   CRect r
GetClientRect(&r);
bmpForSave.CreateCompatibleBitmap(&dc , point.x, point.y);
cdcForSave.CreateCompatibleDC(&dc);
cdcForSave.SelectObject( bmpForSave );
cdcForSave.BitBlt(0,0,point.x,point.y,&dc,0,0,SRCCOPY);//point.x 和point.y是图片大小
//OnDraw( &cdcForSave );

                                    //这里是循环命名给图片
                                     CString filemuns ;
filemuns.Format("%d",i);
CString strFilesName = strFileName +filemuns+ '.' + strExtension;
SaveBitmap( (HBITMAP)bmpForSave , strFilesName );//这个函数就是保存函数

                                    //换行判断
if (xcount < 2)
{
xcount++ ;
}
else
{
xcount = 0 ;
ycount++;
}
}
ReleaseDC(&dc);
if (AfxMessageBox("图像保存完毕!"))
{
PostMessage(WM_QUIT);
}void CImageView::SaveBitmap(HBITMAP hBitMap,CString FileName)
{
CImage image;
image.Attach( hBitMap );
image.Save( FileName );
image.Detach();
}

解决方案 »

  1.   

    cdcForSave.BitBlt(0,0,point.x,point.y,&dc,0,0,SRCCOPY);//point.x 和point.y是图片大小
    ===============
    这里可以选择源DC的起始位置吧。
      

  2.   

    cdcForSave.BitBlt(0,0,point.x,point.y,&dc,0,0,SRCCOPY);//红色部分可以控制位置和大小
      

  3.   

    cdcForSave.BitBlt(0,0,point.x,point.y,&dc,0,0,SRCCOPY);//红色部分可以控制位置和大小
      

  4.   


    cdcForSave.BitBlt(0,0,point.x,point.y,&dc,0,0,SRCCOPY);//point.x 和point.y是图片大小(0,0)就是你的左上角的值,你可以根据你的图像的坐标值来设定新的左上角(x,y)
      

  5.   

    这里是把 屏幕 DC 复制到 你的 保存DC 里, 
    BitBlt 函数的开始2个参数0,0 不可以改,改了,你要保存的图,就不是从最左上角开始画.
    例如你这里写成 10,30 ,那么最上面30,最左边10都会是黑的,因为是从 10,30,开始画.假设你要保存 20,40 开始的位置,宽度是100,高度300.
    cdcForSave.BitBlt(0,0,100(宽度),300(高度),&dc,20(开始位置),40(开始位置),SRCCOPY);