Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 2013
-
9 mai 2012 à 18:27
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024
-
22 mai 2012 à 16:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 22 mai 2012 à 16:39
Une nouvelle mis à jour avec les corrections qui m'ont été signalées. Je tiens à vous remercier tous de votre collaboration.
@+ Le Pivert
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 22 mai 2012 à 09:49
Fausse manoeuvre c'est parti avant que j'ai terminé.
J'ai essayé ton code pour définir les espaces entre les miniatures. Cela fonctionne très bien.
Une petite rectification en cas d'Option Strict On:
'espace entre les miniatures
Public Sub SetSpacing(ByVal x As Int16, ByVal y As Int16)
SendMessage(lstvItem.Handle, LVM_SETICONSPACING, CType(0, IntPtr), CType(x * 65536 + y, IntPtr))
lstvItem.Refresh()
End Sub
mettre ceci à cet endroit:
'on affiche les images en miniature
SetSpacing(150, 150) 'espace entre les miniatures
If Me.lstvItem.Items.Count <> 0 Then
For i = 0 To imglst.Images.Count - 1
' imglst.Images.Item(i) = Image.FromFile(imgPaths(i)).GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)'sans ThumbExtract.dll: plus lent
imglst.Images.Item(i) = ExtractImage(imgPaths(i), 100, 100) 'avec ThumbExtract.dll: plus rapide
lstvItem.RedrawItems(i, i, True)
Application.DoEvents()
Next
End If
Encore merci et au plaisir de te relire
@+ Le Pivert
PS j'espère que tu pourras lire ce commentaire, car il y a des problème de rafraichissement de cache!
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 22 mai 2012 à 09:43
Bonjour banana32,
Merci pour le commentaire et la note.
Bonsoir Le Pivert,
Comme d'habitude, une très jolie source.
Dans un projet récent, j'ai utilisé comme toi les listview en mode LargeIcon et j'ai trouvé que les images étaient beaucoup trop espacées. Tant verticalement qu'horizontalement.
Alors j'ai trouvé une astuce sur un site (je ne sais plus où) pour les disposer à loisirs.
Voici le code à mettre dans les déclarations :
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Const LVM_FIRST As Integer = &H1000
Const LVM_SETICONSPACING As Integer = LVM_FIRST + 53
Voici la sub à rajouter dans le code :
Public Sub SetSpacing(ByVal x As Int16, ByVal y As Int16)
SendMessage(ListView1.Handle, LVM_SETICONSPACING, 0, x * 65536 + y)
ListView1.Refresh()
End Sub
Et donc avant de remplir la listview il suffit d'écrire par exemple :
SetSpacing(150, 170)
Ca vaut le coup d'essayer ;)
Je met 7/10 pour t'encourager dans tes efforts.
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 21 mai 2012 à 11:10
Salut,
Merci d'avoir souligné le problème rencontré par les possesseurs de vista/seven à l'ouverture. Ils pourront corriger eux même.
Pour les points blancs sur certaines miniatures, je n'ai pas eu ce problème. Essayer d'ouvrir les miniatures sans la ThumbExtract.dll:
imglst.Images.Item(i) = Image.FromFile(imgPaths(i)).GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)'sans ThumbExtract.dll: plus lent
ou de diminuer les miniatures en corrigeant le code:
imglst.Images.Item(i) = ExtractImage(imgPaths(i), 80, 80) 'avec ThumbExtract.dll: plus rapide
et dans l'imagelist:ImageSize: 80;80.
Pour la personnalisation, vous pouvez supprimer les PictureBox (c'est surtout pour le fun) et les remplacer par un menu contextuel sur la Listview. J'ai mis le code dans Private Sub save() sur les images bmp et gif:
'enregistrer l'image en tant qu'image bmp
Dim bmp As New Bitmap(chemin & nomimage & ext)
bmp.Save(chemindestination & "" & nomimage & FileTypes.Text, System.Drawing.Imaging.ImageFormat.Bmp)
il suffit de l'adapter aux autres formats.
Pour le style du code, j'ai comme références les programmes de vbFrance. Je n'ai fait aucune étude de programmation.
@+ Le Pivert
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 21 mai 2012 à 03:17
Il n'est pas possible de remonter la racine, pour ceux qui comme moi ne change pas les racines par défaut, donc, on reste dans le répertoire documents. Sous vista ou Seven, le répertoire "Mes documents" ne contient pas les dossiers physiques mais des liens(pour les SpecialFolder). Le mieux, c'est une racine qui contient tout les répertoires, My.Computer ou directement le répertoire images ou un autre mais pas celui là.
Est-il possible de supprimer les points blancs sur certaines miniatures? Paramètrages?
Sinon, c'est une très bonne base à personnaliser. J'utilise VS10 et j'ai donc converti la solution, qui veux le projet converti, demande. Mais il est facile de convertir avec VS 10, c'est une source débutant, on ouvre le sln en passant par le menu fichier/ouvrir de Visual Studio et le convertisseur fait le reste. 8 pour le travail et le partage utile, pas pour le style du code;)
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 9 mai 2012 à 19:18
c'est pas faux ! tout à l'air d'avoir déjà été fait et bien mieux que nous autres... Mais bon, nous sommes là aussi pour nous divertir en programmant. bonne continuation et si tu veux des idées je peux peut être aider ^.^
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 9 mai 2012 à 18:53
Il fallait lire: "Le plus dure c'est de trouver des idées nouvelles! "
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024137 9 mai 2012 à 18:52
Bonjour ADN56,
Content de te relire. Merci pour le commentaire et la note. Le plus dire c'est de trouver des idées nouvelles!
@+ Le Pivert
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 9 mai 2012 à 18:27
clair, net, précis, sympa ! comme d'habitude (:
juste une chose :
-le "case" type de fichier est pas très jolie je trouve ?
-vbNewLine => environnement.newligne c'est plus net ^^
22 mai 2012 à 16:39
@+ Le Pivert
22 mai 2012 à 09:49
J'ai essayé ton code pour définir les espaces entre les miniatures. Cela fonctionne très bien.
Une petite rectification en cas d'Option Strict On:
'espace entre les miniatures
Public Sub SetSpacing(ByVal x As Int16, ByVal y As Int16)
SendMessage(lstvItem.Handle, LVM_SETICONSPACING, CType(0, IntPtr), CType(x * 65536 + y, IntPtr))
lstvItem.Refresh()
End Sub
mettre ceci à cet endroit:
'on affiche les images en miniature
SetSpacing(150, 150) 'espace entre les miniatures
If Me.lstvItem.Items.Count <> 0 Then
For i = 0 To imglst.Images.Count - 1
' imglst.Images.Item(i) = Image.FromFile(imgPaths(i)).GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)'sans ThumbExtract.dll: plus lent
imglst.Images.Item(i) = ExtractImage(imgPaths(i), 100, 100) 'avec ThumbExtract.dll: plus rapide
lstvItem.RedrawItems(i, i, True)
Application.DoEvents()
Next
End If
Encore merci et au plaisir de te relire
@+ Le Pivert
PS j'espère que tu pourras lire ce commentaire, car il y a des problème de rafraichissement de cache!
22 mai 2012 à 09:43
Merci pour le commentaire et la note.
21 mai 2012 à 23:56
Comme d'habitude, une très jolie source.
Dans un projet récent, j'ai utilisé comme toi les listview en mode LargeIcon et j'ai trouvé que les images étaient beaucoup trop espacées. Tant verticalement qu'horizontalement.
Alors j'ai trouvé une astuce sur un site (je ne sais plus où) pour les disposer à loisirs.
Voici le code à mettre dans les déclarations :
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Const LVM_FIRST As Integer = &H1000
Const LVM_SETICONSPACING As Integer = LVM_FIRST + 53
Voici la sub à rajouter dans le code :
Public Sub SetSpacing(ByVal x As Int16, ByVal y As Int16)
SendMessage(ListView1.Handle, LVM_SETICONSPACING, 0, x * 65536 + y)
ListView1.Refresh()
End Sub
Et donc avant de remplir la listview il suffit d'écrire par exemple :
SetSpacing(150, 170)
Ca vaut le coup d'essayer ;)
Je met 7/10 pour t'encourager dans tes efforts.
21 mai 2012 à 11:10
Merci d'avoir souligné le problème rencontré par les possesseurs de vista/seven à l'ouverture. Ils pourront corriger eux même.
Pour les points blancs sur certaines miniatures, je n'ai pas eu ce problème. Essayer d'ouvrir les miniatures sans la ThumbExtract.dll:
imglst.Images.Item(i) = Image.FromFile(imgPaths(i)).GetThumbnailImage(100, 100, Nothing, IntPtr.Zero)'sans ThumbExtract.dll: plus lent
ou de diminuer les miniatures en corrigeant le code:
imglst.Images.Item(i) = ExtractImage(imgPaths(i), 80, 80) 'avec ThumbExtract.dll: plus rapide
et dans l'imagelist:ImageSize: 80;80.
Pour la personnalisation, vous pouvez supprimer les PictureBox (c'est surtout pour le fun) et les remplacer par un menu contextuel sur la Listview. J'ai mis le code dans Private Sub save() sur les images bmp et gif:
'enregistrer l'image en tant qu'image bmp
Dim bmp As New Bitmap(chemin & nomimage & ext)
bmp.Save(chemindestination & "" & nomimage & FileTypes.Text, System.Drawing.Imaging.ImageFormat.Bmp)
il suffit de l'adapter aux autres formats.
Pour le style du code, j'ai comme références les programmes de vbFrance. Je n'ai fait aucune étude de programmation.
@+ Le Pivert
21 mai 2012 à 03:17
Attention à ceci avec vista/seven
opendir.RootFolder = Environment.SpecialFolder.MyDocuments
Il n'est pas possible de remonter la racine, pour ceux qui comme moi ne change pas les racines par défaut, donc, on reste dans le répertoire documents. Sous vista ou Seven, le répertoire "Mes documents" ne contient pas les dossiers physiques mais des liens(pour les SpecialFolder). Le mieux, c'est une racine qui contient tout les répertoires, My.Computer ou directement le répertoire images ou un autre mais pas celui là.
Est-il possible de supprimer les points blancs sur certaines miniatures? Paramètrages?
Sinon, c'est une très bonne base à personnaliser. J'utilise VS10 et j'ai donc converti la solution, qui veux le projet converti, demande. Mais il est facile de convertir avec VS 10, c'est une source débutant, on ouvre le sln en passant par le menu fichier/ouvrir de Visual Studio et le convertisseur fait le reste. 8 pour le travail et le partage utile, pas pour le style du code;)
9 mai 2012 à 19:18
9 mai 2012 à 18:53
9 mai 2012 à 18:52
Content de te relire. Merci pour le commentaire et la note. Le plus dire c'est de trouver des idées nouvelles!
@+ Le Pivert
9 mai 2012 à 18:27
juste une chose :
-le "case" type de fichier est pas très jolie je trouve ?
-vbNewLine => environnement.newligne c'est plus net ^^
au plaisir de relire tes codes, amicalement ADN