picture有一个属性是autoredraw只要把他设为true应该可以避免这种现象。不过我不是用你这种方法,我是用移动图片的方法。

解决方案 »

  1.   

    你指的是bitblt吗?我也试过,但没成功
    我先绘制表格在pic1上,并使pic1不可见,
    再用bitblt pic2.hdc,0,0,pic1.width,pic1.height,pic1.hdc,0,0,vbsrccopy
    但pic2上怎么什么也不显示呀?
      

  2.   

    可能是你画的时间过长,不过,你可以先在Pictrue对象里将图形画好,
    可采用一个变通的方法。
    先用一个临时PictureBox将图形画好。
    然后再将图形保存在内存当中            
    If hMem0 <> 0 Then DeleteDC hMem0
    If HoldMap <> 0 Then DeleteObject HoldMap
    hMem0 = CreateCompatibleDC(FrmPic.Picture1.Hdc)
    HoldMap = SelectObject(hMem0, picture1.Handle)显示时再用Bitblt重新绘到显示的picturebox2上
      

  3.   

    请问不可见的picture1能不能保存我绘制的表格?
      

  4.   

    说实话我没太明白您的意思,我是用picture1.print直接在Picture上打印的,并没有用bitblt,而且我没有用过这个,但是看您的语句的意思应该是将PIC1的内容拷贝到PIC2上吧,不过我一会可以试一下,我倒是从这里学到了一个新的东西。
      

  5.   

    一个picturebox做容器,一个picturebox画表格(这个picbox的大小同打印纸)
    当滚动时,不用重画,移动里面的picturebox即可
      

  6.   

    IsMe()
    请问您是如何移动picturebox的内容的?
    能否给个代码看看,谢谢。
    你绘制表格时需要用到pic.cls吗?c_c_(cc) 
    问题的关键是要解决打印预览时不让pic2的屏幕闪烁。
    当产生vs_scroll,hs_scroll事件时
    我会重绘制表格,再用bitblt函数从pic1拷贝到pic2上
    如果拖着vs,或HS则屏幕会实时更新表格的内容并产生闪烁。
      

  7.   

    up***********************************************
    ***********************************************
    这是一个什么样的世界啊!!!!!!!!!!!!!
    ××××××××××××××××××××××××
    只是一个vb打天下的世界!!!!!!!!!!!!!
    ……………………………………………………………
    ***********************************************