为了美观我的form有底图.
我可以改变所有的控件大小,在我resize时,但这个底图就有问题了,我不知道要如何改变它.
不改变就会变得好难看,请知道的朋友教一下.
请给出详细的代码.
谢谢!

解决方案 »

  1.   

    参考一下我写的这个代码:Option Explicit
    'Form1上添加1个图片框picture1
    Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
    Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long
    Private Const HALFTONE = 4
    Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = sourcePrivate Sub Form_Load()
            Picture1.Picture = LoadPicture("C:\images.jpg") '这时加入背景图,使其一运行就充满窗体
            Picture1.Visible = False
            Picture1.AutoRedraw = True
            Me.AutoRedraw = True
            Call Form_Resize
            Me.Refresh
            Me.AutoRedraw = False
    End SubPrivate Sub Form_Resize()
            Dim Rtn As Long
            Dim hDC1 As Long, hDC2 As Long
            hDC1 = Picture1.hdc
            hDC2 = Me.hdc
            Call SetStretchBltMode(hDC2, HALFTONE)
            Rtn = StretchBlt(hDC2, 0, 0, Me.ScaleWidth, Me.ScaleHeight, hDC1, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, SRCCOPY)
            Me.AutoRedraw = True
            Me.Refresh
    End Sub
      

  2.   

    你需在窗体添加Image控件,并设置好Image控件的Picture属性的图片选择.
    使用如下代码:
    Private Sub Form_Load()
        Image1.Stretch = True
        Image1.Height = Me.Height
        Image1.Width = Me.Width
    End SubPrivate Sub Form_Resize()
        Image1.Height = Me.Height
        Image1.Width = Me.Width
    End Sub
      

  3.   

    再说明一下:
    我的意思是要拉申我的底图尽寸.
    通过form.picture.width属性可以看出这个width是在变的,但我的实现图片未变.
    我现在就是需要把我的图片宽来适应这个form.picture.width,
    当然高也一样
      

  4.   

    楼上的二位:
    你们都使用了第二个控件:Picture1和Image1
    我的问题是form的底图.
    不是picture和Image控件改变大小,以及.
    当然,要是实在没办法,可能也只能是采用二位的方法了.
      

  5.   

    不设置form的背景图片,用个image控件来显示图片,放在最底层
    Private Sub Form_Load()
        Image1.Stretch = True
    End SubPrivate Sub Form_Resize()
        On Error Resume Next
        Image1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
    End Sub
      

  6.   


    Form1.Picture 属性并没有这样的缩放功能,所以只有搭个桥间接的实现。像我1楼那个,是将Picure1隐藏起来,然后通过Picture1映射到Form1来实现的。
      

  7.   


    form的底图是没法变的,因为没有缩放功能。就算你把底图映射到剪贴板,再从剪贴板映射到Form1.Picture上,那剪贴板的图像你总得找个地方保存起来才行吧,否则无法实现。
      

  8.   

    http://topic.csdn.net/u/20080912/19/4074ae58-9d1f-4680-af3b-b8e39d736ee7.html如果你一定要用 Picture 用上面的方式.http://www.qqgb.com/Program/VB/VBJQ/Program_214728.html如果可以增加 image 控件用上面的方式.
      

  9.   

    实现的方法还是有的:
    在Form上放一picture1
    Form_load事件---,将Form上图片赋给picture1----隐藏picture1
    form_resize事件,-----显示picture1-清除Form1上的图片,-----,根据放大比例Bltbit将picture1的图片重绘在Form上----隐藏picture1
    只是很麻烦而已