SelectObject( hPicture_Current, hPicture );StretchBlt( hPictureDC, 0, 0, nPictureWidth * (1 + nPress / 10), nPictureHeight * (1 + nPress / 10),hPicture_Current, 0, 0, nPictureWidth, nPictureHeight, SRCCOPY );nPicture_X = nPicture_Real_X * (1 + nPress / 10);
nPicture_Y = nPicture_Real_Y * (1 + nPress / 10);
DeleteDC( hPicture_Current );BitBlt( hdc, PICTURE_LEFT, PICTURE_TOP, PICTURE_RIGHT, PICTURE_BOTTOM, hPictureDC, nPicture_X, nPicture_Y, SRCCOPY );
为什么不能将最后的图片显示上来呢?注:hdc 是窗体的设备句柄。
最后就是不能显示上去。
难道说用StretchBlt处理过的DC就不能用BitBlt复制了吗?不会吧?
大侠们指点一下

解决方案 »

  1.   

    我查过了,BitBlt中的几个宏定义是没有问题的,后边两个一开始只是0, 0。按理说应该没什么问题。上边的复制,在nPress=0的情况下是完全复制。
    我试过,如果将上边hPictureDC换成hdc,是可以将全付图片显示在窗体上的
      

  2.   

    这里是一个概念问题
    StretchBlt 和 BitBlt 都是针对 DC的,不存在前面进行过什么操作
      

  3.   

    如果是这样,我就觉得比较奇怪了。都是针对DC操作的,按道理前面拉申之后,还是存在DC中的。后边DC的复制,应该可以呀。
      

  4.   

    StretchBlt( hdc, 0, 0, nPictureWidth * (1 + nPress / 10), nPictureHeight * (1 + nPress / 10),hPicture_Current, 0, 0, nPictureWidth, nPictureHeight, SRCCOPY );
    看看
      

  5.   

    SelectObject( hPicture_Current, hPicture );StretchBlt( hPictureDC你select到的是 hPicture_Current, 却把图片画到了 hPictureDC 上, 当然看不见了.
      

  6.   

    nPicture_X = nPicture_Real_X * (1 + nPress / 10);
    nPicture_Y = nPicture_Real_Y * (1 + nPress / 10);BitBlt( hdc, PICTURE_LEFT, PICTURE_TOP, PICTURE_RIGHT, PICTURE_BOTTOM, hPictureDC, nPicture_X, nPicture_Y, SRCCOPY );
    ----------------------------------------------------------
    看清楚了,BitBlt的倒数第三,第二个参数并不是图象大小而是图象坐标,你把hPictureDC里面(nPicture_X, nPicture_Y)开始处的图象画上去了,当然没有了,应该是传递0,0
      

  7.   

    StretchBlt处理过的DC就不能用BitBlt复制 ? 不会吧,我晕