Avatar billede madsmpedersen Nybegynder
14. april 2003 - 19:28 Der 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???
Avatar billede hcichosz Praktikant
14. april 2003 - 19:40 #1
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

    ' Display the message.
    error_text = "Error opening file " & file_name
    picViewer.Width = picViewer.Width - picViewer.ScaleWidth + _
        picViewer.TextWidth(error_text) + 240
    picViewer.Height = picViewer.Height - picViewer.ScaleHeight + _
        picViewer.TextHeight(error_text) + 480
    picViewer.CurrentX = 120
    picViewer.CurrentY = 240
    picViewer.Print error_text
End Sub

' Make picViewer size to fit its image.
Private Sub Form_Load()
    picViewer.AutoSize = True
    picViewer.AutoRedraw = True

    ' Initialize the filter ComboBox.
    cboPatterns.Clear
    AddPattern "Bitmaps (*.bmp)", "*.bmp"
    AddPattern "GIF (*.gif)", "*.gif"
    AddPattern "JPG (*.jpg, *.jpeg)", "*.jpg;*.jpeg"
    AddPattern "Graphic Files (*.bmp, *.gif, *.jpg, *.jpeg)", "*.bmp;*.gif;*.jpg;*.jpeg"
    AddPattern "All Files (*.*)", "*.*"
    cboPatterns.ListIndex = 0

    ' Select the application's path.
    drvSelect.Drive = App.Path
    dirSelect.Path = App.Path
    filSelect.Path = App.Path
End Sub

' Make the controls as larger as possible.
Private Sub Form_Resize()
Const GAP = 30

Dim wid As Single
Dim hgt As Single
Dim wid2 As Single

    wid = drvSelect.Width
    hgt = (ScaleHeight - drvSelect.Height - cboPatterns.Height - 4 * GAP) / 2
    If hgt < 120 Then hgt = 120
    drvSelect.Move GAP, GAP
    dirSelect.Move GAP, drvSelect.Top + drvSelect.Height + GAP, wid, hgt
    filSelect.Move GAP, dirSelect.Top + dirSelect.Height + GAP, wid, hgt
    cboPatterns.Move GAP, filSelect.Top + filSelect.Height + GAP, wid

    wid2 = ScaleWidth - wid
    If wid2 < 120 Then wid2 = 120
    picViewer.Move wid + 2 * GAP, GAP
End Sub


mvh H Cichosz
Avatar billede hcichosz Praktikant
14. april 2003 - 19:57 #2
ellers skal du søge på den her ""  Thumb DB 1.2 "" på planet-source 
den er hurtig

mvh H Cichosz
Avatar billede madsmpedersen Nybegynder
14. april 2003 - 23:42 #3
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.

Håber nogen kan hjælpe.
Mads
Avatar billede hcichosz Praktikant
17. april 2003 - 19:35 #4
jeg prøver lige igen prøv lige at kigge på den her det er ikke hvad du helt mangler men jeg troer den kan passes til med lidt kodning

http://www.coderoom.com/code/graphics/file36.zip
mvh HC
Avatar billede hcichosz Praktikant
17. april 2003 - 23:08 #5
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

Ja den bruger stifinder til de små
mvh Henrik C
Avatar billede madsmpedersen Nybegynder
21. april 2003 - 13:23 #6
Det er korrekt at man kan de windowsgenererede thumbnail i commondialog.showopen, men hvordan får jeg dem over på min form
Avatar billede hcichosz Praktikant
23. april 2003 - 18:57 #7
her er noget jeg troer du kan få nytte af
http://www.mvps.org/vbnet/code/shell/index.html
Avatar billede madsmpedersen Nybegynder
28. august 2003 - 08:55 #8
Du får pointne for din ulejlighed.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester