假设我有一张图片是 2000x2000, 要求放大5倍。如果我将图片分成四块,都是1000x1000,然后各自放大5倍,变成四块5000x5000。将这四大块拼在一起,得到的图片是不是跟直接放大的效果一样?

解决方案 »

  1.   

    图片需要放大时要打印一些微型点阵,在dpi=2400的打印机中实现,所以一幅通过扫描仪扫描的图片一般dpi=300已经是很多了,要放大8倍才能得到需要的打印图,以下是我实现的代码:
    HBITMAP hbitmap;
    hbitmap=(HBITMAP)::LoadImage(NULL,_T("f:\\temp\\face.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    if(hbitmap)
    {
    CBitmap bmp1,bmp2;
    bmp1.Attach(hbitmap); CDC dc;
    dc.Attach(::GetDC(NULL)); CDC memdc1,memdc2;
    if(memdc1.CreateCompatibleDC(&dc) && memdc2.CreateCompatibleDC(&dc) && bmp2.CreateCompatibleBitmap(&dc,w,h))
    {
    CBitmap *oldbitmap1,*oldbitmap2;
    oldbitmap1=memdc1.SelectObject(&bmp1);
    oldbitmap2=memdc2.SelectObject(&bmp2);
    memdc2.StretchBlt(0,0,w,h,&memdc1,0,0,bih.biWidth,bih.biHeight,SRCCOPY); memdc2.SelectObject(oldbitmap2);
    memdc2.DeleteDC();
    memdc1.SelectObject(oldbitmap1);
    memdc1.DeleteDC();
    bmp2.Detach();
    bmp1.Detach();
    }
      

  2.   


    上面代码的问题是这个函数:bmp2.CreateCompatibleBitmap(&dc,w,h);当w,h比较大时,会返回错误码为8。