Hallo,
erstmal das wichtigste vorweg:
Betriebssystem: Windows XP Professional (SP2)
VB Version: VB 6 (SP5)
Nun zu meinem Problem:
In meinem aktuellen Projekt muss ich viel mit Bildern arbeiten und muss auch dementsprechend viele Laden und Anzeigen lassen. Worst Case wären über 1000 Bilder auf einmal. Leider dauert das Anzeigen der Bilder verdammt lang und ich habe bis jetzt keine vernünftigen Lösungsansätze gefunden das zu beschleunigen. In einem kleinem Tesprogramm habe ich mal grob die Zeiten gemessen wie lange ich für das Anzeigen der Bilder mit meiner Aktuellen Lösung brauche. Meine durchschnittliche Bildgröße sind 20kb. Bildformat ist .GIF und es sind immer 20 Bilder. Die Messungen haben bei mir unterschiedliche Ergebnisse gebracht. Im besten Fall konnte ich in 1sec 20 Bilder Anzeigen und im schlechtesten in 1sec 5 Bilder. Diese Zeiten habe ich benutzt um folgende Tabelle zu erstellen:
Bilder 20B/sec 5B/sec
1 0,05 sec 0,20 sec
5 0,25 sec 1,00 sec
10 0,50 sec 2,00 sec
15 0,75 sec 3,00 sec
20 1,00 sec 4,00 sec
25 1,25 sec 5,00 sec
30 1,50 sec 6,00 sec
35 1,75 sec 7,00 sec
40 2,00 sec 8,00 sec
45 2,25 sec 9,00 sec
50 2,50 sec 10,00 sec
55 2,75 sec 11,00 sec
60 3,00 sec 12,00 sec
65 3,25 sec 13,00 sec
70 3,50 sec 14,00 sec
75 3,75 sec 15,00 sec
80 4,00 sec 16,00 sec
85 4,25 sec 17,00 sec
90 4,50 sec 18,00 sec
95 4,75 sec 19,00 sec
100 5,00 sec 20,00 sec
105 5,25 sec 21,00 sec
110 5,50 sec 22,00 sec
115 5,75 sec 23,00 sec
120 6,00 sec 24,00 sec
125 6,25 sec 25,00 sec
130 6,50 sec 26,00 sec
135 6,75 sec 27,00 sec
140 7,00 sec 28,00 sec
145 7,25 sec 29,00 sec
150 7,50 sec 30,00 sec
155 7,75 sec 31,00 sec
160 8,00 sec 32,00 sec
165 8,25 sec 33,00 sec
170 8,50 sec 34,00 sec
175 8,75 sec 35,00 sec
180 9,00 sec 36,00 sec
185 9,25 sec 37,00 sec
190 9,50 sec 38,00 sec
195 9,75 sec 39,00 sec
200 10,00 sec 40,00 sec
300 15,00 sec 60,00 sec
400 20,00 sec 80,00 sec
500 25,00 sec 100,00 sec
1000 50,00 sec 200,00 sec Wie man sehen kann sind die Zeiten unzumutbar für den Anwender. Leider kann ich die Bildeanzeige nicht auf mehrer "Seiten" verteilen, sodass nicht zu viele Bilder geladen werden. Der Auftraggeber möchte nicht Blättern sondern nur nach Untenscrollen müssen.
Mein Tesprogramm sieht so aus:
Private Sub Command1_Click()
Dim z1 As Integer
Dim z2(19) As String
Call func_datenanbinden(frmData.Data5, "tblSanitaer", "bpfad")
For z1 = 0 To 19
z2(z1) = frmData.Data5.Recordset.Fields("bpfad").Value
frmData.Data5.Recordset.MoveNext
Next z1
h1 = Now()
For z1 = 0 To Picture3.Count - 1
Call func_pb_bild(Picture(z1), z2(z1))
Next z1
h2 = Now()
MsgBox "Start: " & h1 & " Ende : " & h2
End Sub
Function func_pb_bild(pb As PictureBox, ByVal pfad As String)
If FSys.FileExists(pfad) Then
pPicture = LoadPicture(pfad)
Else
pb.BackColor = &HFFFFFF
pb.Visible = True
Exit Function
End If
pb.Cls
pb.PaintPicture frmData.ppb.Image, 0, 0, pb.width, pb.height
pb.Visible = True
End Function Es wäre Klasse, wenn ihr mir ein Paar Denkanstöße für Lösungsansätze geben könntet oder andere Ratschläge.
MfG
krunde |