读书人

怎么在一个PICTUREBOX里面实现 用一个

发布时间: 2012-04-15 18:39:21 作者: rapoo

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

[解决办法]
有个属性需要设一下就好了。msdn里记得有
[解决办法]
平铺的含义是:如果图片没有控件picturebox大,就一张一张地把picturebox铺满,否则就用一部分填满。
用简单的光栅运算就可以实现:

VB code
'窗体上放一个命令按钮Command1,2个图片框控件Picture1,picture2。Picture1比picture2大,在picture2中装入一张小图片。'程序启动后,这张小图片就会铺满整个picture1Option ExplicitPrivate 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 LongPrivate 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
[解决办法]
看我在5L的回复

[解决办法]
使用VB的paintpicture函数
[解决办法]
探讨
使用VB的paintpicture函数

[解决办法]
不用如此麻烦。只用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 Sub

Private 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

读书人网 >VB

热点推荐