14. april 2003 - 19:28Der er
7 kommentarer og 1 løsning
Vise store iconer(billeder) hurtigt.
Jeg skal bruge noget der kan vise "store iconer" (thumbnails af billeder) ligesom stifinder, ACDSee m.fl. i VB 6. Det skal helst gå lige så stærkt.
Jeg har set på 27 eksempler fra planet-source. De bruger stort set alle sammen: pic.picture = loadpicture(fil), og det går alt for langsomt.
Evt. kan jeg bruge en webbrower, men går det lige så stærkt som explorer og hvordan finder jeg ud af den originale størrelse, så jeg undgår at deformere mine billeder til et kvadrat, uden at indlæse billederne???
Kan det ikke lade sig gøre at bruge funktionen fra stifinder???
her er hele koden til det du skal på din form putte 1 driverlist box kaldet drvSelect 1 dirlistbox kaldet dirSelect 1 fiellistbox kaldet filSelect 1 combobox kaldet cboPatterns og til sidst 1 picturebox kaldet picViewer så køre det.
Option Explicit
' Patterns for the FileListBox. Private Patterns() As String
' Add a pattern to the ComboBox and pattern list. Private Sub AddPattern(ByVal pattern_name As String, ByVal pattern_value As String) cboPatterns.AddItem pattern_name ReDim Preserve Patterns(0 To cboPatterns.NewIndex) Patterns(cboPatterns.NewIndex) = pattern_value End Sub
' The user has selected a pattern. Apply it to ' the FileListBox. Private Sub cboPatterns_Click() filSelect.Pattern = Patterns(cboPatterns.ListIndex) End Sub
' The user selected a new directory. Tell the ' file list. Private Sub dirSelect_Change() filSelect.Path = dirSelect.Path End Sub
' The user selected a new drive. Tell the ' directory list. Private Sub drvSelect_Change() Static ignore_changes As Boolean
If ignore_changes Then Exit Sub
On Error GoTo DriveError dirSelect.Path = drvSelect.Drive Exit Sub
DriveError: ' Reselect the old drive. Beep ignore_changes = True drvSelect.Drive = dirSelect.Path ignore_changes = False Exit Sub End Sub
' The user selected a file. Display it. Private Sub filSelect_Click() Dim file_name As String Dim error_text As String
On Error GoTo FileOpenError file_name = filSelect.Path If Right$(file_name, 1) <> "\" Then file_name = file_name & "\" file_name = file_name & filSelect.FileName picViewer.Picture = LoadPicture(file_name) Exit Sub
FileOpenError: ' We could not open the file (probably an ' invalid format). Display an error message. Beep
' Remove the current picture. Set picViewer.Picture = Nothing picViewer.Cls
Eksemplet bruger også loadpicture og med 400 billeder x 600 kb tager det meget lang tid (ca. 0,5 sekund / billede på min PC)
ACDSee bruger lige så langtid, når billedet skal loades i fuld størrelse, men når størrelsen den skal vise bliver mindre øges tempoet, selvom filstørrelsen er uændret.
Webbrowserideen er stort set lige så langsom som loadpicture.
Jeg skal altså bruge en måde loadpicture hvor man kan bestemme billedestørrelsen og dermed hastigheden.
User32 har en loadimage, som jeg tror kan gøre det, men kun med bitmap, og jeg bruger jpg.
Hej igen glem den oven over, Her kommer den, den bruger LoadPicture MEN KUN TIL AT VISE BILLEDET I STORT til at vise de små thumbnails af billeder bruger den stifinder men det kræver jo også at store ikoner er slået til i mapperne med billeder det har taget lidt tid at finde udaf men er ret simpel fylder ikke meget. du skal bruge en form en Image kontrol oppe i venstre hjørne og en Commondialog kontrol så tilføjer du en menu kalde den File under menu Open og vis du vil Exit her kommer koden til formen
Private Sub exit_Click() 'Closes the program. Unload Me End Sub
Private Sub open_Click()
Dim Whatfile As String CommonDialog1.Filter = "All Files (*.*)|*.*|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif|BMP Files (*.bmp)|*.bmp" CommonDialog1.ShowOpen Whatfile = CommonDialog1.FileName Image1.Picture = LoadPicture(Whatfile) Form1.Height = Image1.Height + 675 Form1.Width = Image1.Width + 135 End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.