'控件:CommonDialog1、ImageList1、Picture1(PictureBox)、Command1、Command2 Private Sub Command1_Click() '将图逐个存入 ImageList1 CommonDialog1.ShowOpen 'Set Picture1.Picture = LoadPicture(CommonDialog1.FileName) 'ImageList1.ListImages.Add ImageList1.ListImages.Count + 1, , LoadPicture(CommonDialog1.FileName) ImageList1.ListImages.Add , , LoadPicture(CommonDialog1.FileName) End Sub Private Sub Command2_Click() '读出第 N 个画 Dim N As Long N = 3 Set Picture1.Picture = ImageList1.ListImages.Item(N).Picture End Sub
'用数组存 1.bmp、2.bmp、3.bmp '控件:Picture1(PictureBox)、Command1、Command2 'Form1: Dim PictureArray() As stdole.StdPicture Private Sub Command2_Click() '读出第 N 个画 Static N As Long 'Set Picture1.Picture = ImageList1.ListImages.Item(N).Picture Set Picture1.Picture = PictureArray(N) N = N + 1 End Sub Private Sub Form_Load() Picture1.AutoSize = True ReDim PictureArray(3) As stdole.StdPicture For i = 0 To 2 Set PictureArray(i) = New stdole.StdPicture Set PictureArray(i) = stdole.LoadPicture("d:\" & i + 1 & ".bmp") '用数组存 1.bmp、2.bmp、3.bmp Next i End Sub
Dim PictureArray() As stdole.StdPicture 这句是什么意思啊。
应该是 Dim PictureArray() as Picture 然后 for i = 0 to 99 set picturearray(i)=loadpicture("d:\" & cstr(i) & ".bmp") next 这样就行.
to matataxu(matata): StdPicture 是 Standard Picture (标准的) Picture 是 VB 专用的 Picture stdole.StdPicture > Picture 你应该知道 VB 专用的 Picture 是不能用 New 关键字实例化的! 所以我用 stdole.StdPicture ,不过这里确实不须实例化, 因为 loadpicture(...) 返回的已经是一个实体了! 题外话: 如果你想在内存中存 FONT(字体) 对象就必须用 stdole.StdFont, 因为 stdole.StdFont 能用 New 关键字实例化,而VB 专用的 FONT 是不能用 New 关键字实例化,无法用其缓存字体,这在打印中很有用!
它同时可以把譬如100个图象文件同时读到内存吗?
Private Sub Command1_Click() '将图逐个存入 ImageList1
CommonDialog1.ShowOpen
'Set Picture1.Picture = LoadPicture(CommonDialog1.FileName)
'ImageList1.ListImages.Add ImageList1.ListImages.Count + 1, , LoadPicture(CommonDialog1.FileName)
ImageList1.ListImages.Add , , LoadPicture(CommonDialog1.FileName)
End Sub
Private Sub Command2_Click() '读出第 N 个画
Dim N As Long
N = 3
Set Picture1.Picture = ImageList1.ListImages.Item(N).Picture
End Sub
'控件:Picture1(PictureBox)、Command1、Command2
'Form1:
Dim PictureArray() As stdole.StdPicture
Private Sub Command2_Click() '读出第 N 个画
Static N As Long
'Set Picture1.Picture = ImageList1.ListImages.Item(N).Picture
Set Picture1.Picture = PictureArray(N)
N = N + 1
End Sub
Private Sub Form_Load()
Picture1.AutoSize = True
ReDim PictureArray(3) As stdole.StdPicture
For i = 0 To 2
Set PictureArray(i) = New stdole.StdPicture
Set PictureArray(i) = stdole.LoadPicture("d:\" & i + 1 & ".bmp")
'用数组存 1.bmp、2.bmp、3.bmp
Next i
End Sub
这句是什么意思啊。
然后 for i = 0 to 99
set picturearray(i)=loadpicture("d:\" & cstr(i) & ".bmp")
next
这样就行.
StdPicture 是 Standard Picture (标准的)
Picture 是 VB 专用的 Picture
stdole.StdPicture > Picture
你应该知道 VB 专用的 Picture 是不能用 New 关键字实例化的!
所以我用 stdole.StdPicture ,不过这里确实不须实例化,
因为 loadpicture(...) 返回的已经是一个实体了!
题外话:
如果你想在内存中存 FONT(字体) 对象就必须用 stdole.StdFont,
因为 stdole.StdFont 能用 New 关键字实例化,而VB 专用的 FONT
是不能用 New 关键字实例化,无法用其缓存字体,这在打印中很有用!
谢谢指教。看来我的vb还学的不够
但我又新建一个图象数组moveto(1to100),
再将pinggai(1to100)随机赋值给moveto(1to100).
这样是不是实现了内存中图象数组对内存中图象数组的copy.
然而.我发现这样速度很慢.
和我以前做的从硬盘赋值到硬盘速度相差不多.甚至于相等.