如何在一个PICTUREBOX里面实现  用一个小图片的  平铺效果

解决方案 »

  1.   

    有个属性需要设一下就好了。msdn里记得有
      

  2.   

    平铺的含义是:如果图片没有控件picturebox大,就一张一张地把picturebox铺满,否则就用一部分填满。
    用简单的光栅运算就可以实现:
    '窗体上放一个命令按钮Command1,2个图片框控件Picture1,picture2。Picture1比picture2大,在picture2中装入一张小图片。
    '程序启动后,这张小图片就会铺满整个picture1
    Option Explicit
    Private Declare Function BitBlt Lib "gdi32.dll" (ByVal hDestDC 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 dwRop As Long) As Long
    Private Const SRCCOPY As Long = &HCC0020Private Sub Command1_Click()
        Dim W1 As Long, W2 As Long, H1 As Long, H2 As Long
        Dim hDC1 As Long, hDC2 As Long
        Dim i As Long, j As Long
        
        W1 = Picture1.ScaleWidth
        W2 = Picture2.ScaleWidth
        H1 = Picture1.ScaleHeight
        H2 = Picture2.ScaleHeight
        hDC1 = Picture1.hDC
        hDC2 = Picture2.hDC
        Debug.Print W1 \ W2, H1 \ H2
        For i = 0 To W1 \ W2
            For j = 0 To H1 \ H2
               BitBlt hDC1, i * W2, j * H2, W2, H2, hDC2, 0, 0, SRCCOPY
            Next
        Next
        
    End SubPrivate Sub Form_Load()
        Me.ScaleMode = 3
        Picture1.ScaleMode = 3
        Picture2.ScaleMode = 3
        Picture1.AutoSize = False
        Picture2.AutoSize = True
        Picture1.AutoRedraw = False
        '事先在picture2中加载一张小图片,我这里加载的是80X78的.程序启动后,这张小图片就会铺满整个picture1。
        Picture2.Picture = LoadPicture("F:\资料\My Pictures\28_meigui_18.jpg")
    End Sub
      

  3.   

    VB的paintpicture封装了Windows的API函数BitBlt!
     
      

  4.   

    不用如此麻烦。只用pictureBox数组控件就行了Option Explicit
     
    Private Sub Command2_Click()
        Dim W1 As Long, W2 As Long, H1 As Long, H2 As Long
     
        Dim i As Long, j As Long
        
        W1 = picDest.ScaleWidth
        W2 = picSource(0).ScaleWidth
        H1 = picDest.ScaleHeight
        H2 = picSource(0).ScaleHeight
        
        Dim picbox_count As Long
        picbox_count = 0
        For i = 0 To W1 \ W2
            For j = 0 To H1 \ H2
                picbox_count = picbox_count + 1
            
                Load picSource(picbox_count)
                Set picSource(picbox_count).Container = picDest
                picSource(picbox_count).Left = W2 * i
                picSource(picbox_count).Top = H2 * j
            
                
                picSource(picbox_count).Visible = True
     
            Next
        Next
        
    End SubPrivate Sub Form_Load()
        Me.ScaleMode = 3
        
        picSource(0).BorderStyle = 0
        picSource(0).ScaleMode = 3
        picSource(0).AutoSize = True
        
        
        picDest.ScaleMode = 3
        picDest.AutoSize = False
        picDest.AutoRedraw = False
        
        
        '加载图片
        picSource(0).Picture = LoadPicture("C:\1.jpg")End Sub
      

  5.   

    窗体上放一个命令按钮Command2,1个图片框控件picDest
    一个数组控件picSource