让所有的autoredraw=true
Pic3.Width = Picture1.ScaleWidth
Pic3.Height = Picture1.ScaleHeight
BitBlt Pic3.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hdc, 0, 0, vbSrcCopy
SavePicture Pic3.Image, "d:\1.bmp"
再试试

解决方案 »

  1.   

    我都这样用,没问题。另外,ScaleMode最好都设置为 3 (包括窗体),这样直接使用Width和Height,减少麻烦。
      

  2.   

    都是和你说的一样啊,就是没用,pic3里空空的,跟本没有把picture2里的图片复制过来,还有picture1里控件
      

  3.   

    Pic3.Width = Picture1.ScaleWidth
    Pic3.Height = Picture1.ScaleHeight
    Pic3.AutoRedraw=True
    BitBlt Pic3.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hdc, 0, 0, vbSrcCopy
    Pic3.AutoRedraw=False
    DoEvents
    SavePicture Pic3.Image, "d:\1.bmp"AutoRedraw 在BitBlt之前要设为TRUE,之后好像要设回FALSE,而致于我加的DoEvents是为了让系统有足够的时间来画Picture,可以试一下,真的不行其实
    还可以改一下,就是把源DC改为Form的DC,然后截取Picture1 的位置,理论上
    讲是可以的。
      

  4.   

    你的一句话doevents把我点醒,没次都是没用,要按2下才有用。
    哈哈,给分1