Private Sub Form_Paint()
Dim pic As Image
Set pic = Controls.Add("vb.image", "ll")
pic.Picture = LoadPicture("F:\Workshop\demo\background.bmp")
For i = 0 To Me.Width Step pic.Width
For j = 0 To Me.Height Step Me.Height
Me.PaintPicture pic, i, j
Next
NextEnd Sub
delphi中TProgressBar是不是进度条呀?如果是有progress 控件也可以用picturebox自己做
Dim pic As Image
Set pic = Controls.Add("vb.image", "ll")
pic.Picture = LoadPicture("F:\Workshop\demo\background.bmp")
For i = 0 To Me.Width Step pic.Width
For j = 0 To Me.Height Step Me.Height
Me.PaintPicture pic, i, j
Next
NextEnd Sub
delphi中TProgressBar是不是进度条呀?如果是有progress 控件也可以用picturebox自己做
Dim pic As Image
Set pic = Controls.Add("vb.image", "ll")
pic.Picture = LoadPicture("F:\Workshop\demo\background.bmp")
For i = 0 To Me.Width Step pic.Width
For j = 0 To Me.Height Step Me.Height
Me.PaintPicture pic, i, j
Next
NextEnd Sub
delphi中TProgressBar应该是不是进度条?
如果是,vb有ProgressBar控件,也可以自己做
将图片的大小和窗体的大小等同平铺是图片原来的大小,放在窗体0,0 处,如果有空白还用该图片填补你要计算出窗体的Width、 Height 和 图片的Width、 Height 之间的差
然后在定位该需补添图片的left 和 top
没有用,没有显示出来!
vicesfq(老沙) :
对,是平铺 怎么做?能不能具体点?VB中那儿ocx控件是进度条???
引用控件 microsoft window common controls 6.0(sp5)
或
引用控件 microsoft window common controls 5.0(sp2)
控件名 ProgressBar
再把你的代码写在下面,
最后 Set Form1.picture=Form1.image
Form1.refresh
2、添加一个新模体
3、粘贴下面代码到新模体
Option Explicit
Declare Function BitBlt Lib "gdi32" (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
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public RetValue As Long
Public Sub TileWindow(WindowObject As Object, p As PictureBox)
Dim j As Integer, i As Integer
Dim x As Integer
Dim WhDC As Long
' This object can be any VB standard object with an hWnd property
WhDC = GetDC(WindowObject.hwnd)
For j = 0 To WindowObject.Height Step p.ScaleHeight
For i = 0 To WindowObject.Width Step p.ScaleWidth
x = BitBlt(WhDC, i, j, p.ScaleWidth, p.ScaleHeight, p.hDC, 0, 0, vbSrcCopy)
Next
Next
End Sub
4、添加一个图片框控件(PICUTRE1),设置其SCALEMODE属性=3-PIXEL,AUTOREDRAW属性=TURE,AUTOSIZE属性=TURE。在PICTURE属性中选择一幅图。
5、添加以下代码到FORM1的PAINT事件:
Private Sub Form_Paint()
TileWindow Me, Picture1
End Sub
6、保存工程项目
7、运行程序。当显示出窗体后,可以看到图片“平铺”到整个窗体。
pic = LoadPicture("F:\Workshop\demo\background.bmp")
For i = 0 To Me.Width Step Me.ScaleX(pic.Width,,Me.ScaleMode)
For j = 0 To Me.Height Step Me.ScaleX(pic.Height,,Me.ScaleMode)
Me.PaintPicture pic, i, j
Next
Next
上面的方法,我都试过!但是,我的平铺还是不行?
我要一个小尺寸图片平铺我的整个窗体!
请高手帮忙!
上面的代码是临时写的,正确率只有90%左右Private Sub Form_Paint()
Dim pic As IPictureDisp
Dim I As Long, J As Long
Set pic = LoadPicture("C:\My Documents\backmap.gif")
For I = 0 To Me.ScaleWidth Step Me.ScaleX(pic.Width, vbHimetric, Me.ScaleMode)
For J = 0 To Me.ScaleHeight Step Me.ScaleX(pic.Height, vbHimetric, Me.ScaleMode)
Me.PaintPicture pic, I, J
Next
Next
Set pic = Nothing
End Sub
一定行我一直就是这样作 的。。Private Sub Form_Paint()
For iX = 0 To Form1.Width Step Image1.Width
For iY = 0 To Form1.Height Step Image1.Height
Form1.PaintPicture Image1.Picture, iX, iY ', , , , , , , vbSrcAnd
Next iY: Next iXEnd Sub
后我放在Resize实现了效果!
谢谢各位!