Form窗体(作为主窗体用),设计时,WindowState=2  '最大化。我想给他设定一背景图,用户在改变窗体大小时,要求背景图同步缩放!可是下面的代码在执行时,只有在最大化状态时满足要求,而在拖放操作时:减小窗体宽度(预期背景图收缩),可是背景图呈现放大趋势;拉大窗体宽度(预期背景图放大),背景图则呈现收缩趋势。不懂,请大家指点,谢谢先!
Private Sub Form_Resize()'FmMain即上述Form窗体
  Dim PicBack As IPictureDisp
  Set PicBack = LoadPicture(G_AppPath & "\MyIni\City1.bmp")
  FmMain.AutoRedraw = True
  FmMain.PaintPicture PicBack, 0, 0, PicBack.Width, PicBack.Height, 0, 0, FmMain.Width + 5000, FmMain.Height - 550
End Sub

解决方案 »

  1.   

    换成picturebox如何?form变化时,设置picturebox的width、height值,使之适应form。
      

  2.   

    http://www.cnxuexi.com/computer/chengxusheji/VB_VB.net/4320.html
      

  3.   

    换成picturebox如何?form变化时,设置picturebox的width、height值,使之适应form。
    ================================================================================
    会出现缺口的现象,背景色露了出来,非常难看。
      

  4.   

    一种方法是用FORM的PAINTPICTURE方法,还有一种方法是在FORM上加载一个IMAGE控件,将控件的STRECH属性设为TRUE。
    然后在FROM的RESIZE事件中调用。
      

  5.   

    还有一种方法是在FORM上加载一个IMAGE控件,然后在FROM的RESIZE事件中调用。
    =====================================================================
    Private Sub Form_Resize()
    ImgBack.Width = FmMain.Width
    ImgBack.Height = FmMain.Height
    End Sub
    是这样吗?还是不行啊,其中图片的左上角很小一部分被放大充满窗体,有“只见树叶不见森林”的效果,还有其他方法吗?
      

  6.   

    Private Sub Form_Resize()
    ImgBack.Width = FmMain.Width
    ImgBack.Height = FmMain.Height
    End Sub
    -------------------
    把ImgBack的Stretch属性设置为True后,上面的代码应该是可以可以满足你的要求
      

  7.   

    很奇怪,难道与分辨率有关?必须整除某个参数才有效果。不过这样有缺点,拖拉窗体边框时屏闪很厉害,有更好的解决办法吗?
    Private Sub Form_Resize()
    ImgBack.Width = FmMain.Width\12
    ImgBack.Height = FmMain.Height\13
    End Sub