我用了CBitmap bitmap;
bitmap.LoadBitmap(IDB_BS2);
m_image1.SetBitmap(bitmap);
来读取并载入图像   我想把读取的图像进行处理下   进行放大或者缩小尺寸  请问该如何处理

解决方案 »

  1.   

    用两个内存DC,用 StretchBlt 把源DC拷贝到目标DC,设置新图的高宽即可。SetStretchBltMode(hDstDC,HALFTONE); //设置目标DC为HALFTONE模式
    StretchBlt(hDstDC,0,0,iWidth2,iHeight2,hScrDC,0,0,iWidth,iHeight,SRCCOPY); //源位图DC拷贝到目标位图DC,使用拉伸模式
    HBITBMP hBmpDst=(HBITMAP)SelectObject(hDstDC,hBmpDstOld); //获取目标DC位图
    m_image1.SetBitmap(hBmpDst);
      

  2.   

    CDC memDC;//定义一个设备上下文
    memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文
    CBitmap bmp;//定义位图对象
    bmp.LoadBitmap(IDB_BKBITMAP);//加载位图
    memDC.SelectObject(&bmp);//选中位图对象
    pDC->BitBlt(30,20,180,180,&memDC,1,1,SRCCOPY);//绘制位图
    //以上是利用BitBlt来绘制位图
    CRect rc(30,20,210,200);//定义一个区域
    CBrush brush(RGB(0,0,0));//定义一个黑色的画刷
    pDC->FrameRect(rc,&brush);//绘制矩形边框
    //只是用来观察两者区别的,绘制一个矩形框
    rc.OffsetRect(220,0);//移动区域
    //下边是利用StretchBlt绘制的位图
    BITMAP BitInfo;//定义位图结构
    bmp.GetBitmap(&BitInfo);//获取位图信息
    int x = BitInfo.bmWidth;//获取位图宽度
    int y = BitInfo.bmHeight;获取位图高度
    pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Height(),&memDC,0,0,x,y,SRCCOPY);//绘制位图
    pDC->FrameRect(rc,&brush);//绘制边框
    brush.DeleteObject();//释放画刷
    memDC.DeleteDC();//释放设备上下文
    bmp.DeleteObject();//释放位图对象
    StretchBlt实现放缩
      

  3.   

    您好  我知道了这个图像的需要改变的尺寸  然后这个IDB_BS1的尺寸小  能不能直接改变bitmap的尺寸?
      

  4.   

    StretchBlt修改里面的参数就能改变显示的大小啊。
      

  5.   


    使用CDC和重画,都是内存操作,很快的
      

  6.   

    那具体在哪里定义的   我在函数里定CDC pDC  报错啊
      

  7.   

    这个只能加载资源位图,要加载本地图片 需要CImage