Thumbnails - afficher des images sous la forme de vignettes

Soyez le premier à donner votre avis sur cette source.

Vue 9 449 fois - Téléchargée 1 500 fois

Description

Exemple de dérivation d'un TPanel pour afficher des images en petit format, en gérant un scrolling progressif et donc économiseur de ressources.
Les images ne sont lues que lorsqu'elles sont affichées et redimensionnées au format défini avant de l'être : utile si l'on a des répertoires contenant beaucoup d'images.
Les composants crées sont
- TThumbs : Le panel principal, à glisser sur une fiche.
- TThumb : La vignette elle-même.

Pour exemple, dérivation de l'événement OnClick du TPanel pour déterminer quelle vignette a été cliquée.

Voilà. Les autres proprietés sont là pour gestion minimale de la présentation, à vous de développer !

- Evénement OnProgress : permet d'afficher la progression du preview en cours.

- TitreString : Le titre du label de la vignette.
- TitreAlignement : Aligné en haut ou en bas.
- LargeurThumb, HauteurThumb : La taille des vignettes.
- BordureThumb : Bordure de la vignette.
- EspaceX, EspaceY : L'espace horizontal et vertical entre chaque vignette.

etc...

La liste des propriétés est dans le code ci-dessous, issu du projet d'exemple.

Source / Exemple :


procedure TFThumb.Button1Click(Sender: TObject);
begin
  If OpenDialog1.Execute then
  With Thumbs do
  Begin
    RepertoireCourant:=ExtractFileDir(OpenDialog1.FileName);
    nbfichiers.Caption:=Inttostr(NombreFichiers);  
    IsInited:=false ;
    EspaceX:=SpinEdit3.value ;
    EspaceY:=SpinEdit4.value ;
    HauteurThumb:=SpinEdit1.Value;
    LargeurThumb:=SpinEdit1.Value;
    Color:=colorBox1.Selected;
    CouleurThumbs:=colorBox2.Selected;
    CouleurTitre:=colorBox3.Selected ;
    Font.color:=colorBox4.Selected ;
    TitreVisible:=checkBox2.checked ;
    ImagesTransparentes:=CheckBox4.Checked;
    BordureThumbs:=CheckBox5.Checked;
    BordureTitre:=CheckBox6.Checked ;
    if checkBox1.Checked then Thumbs.TitreAlignement:=albottom
    else Thumbs.TitreAlignement:=altop;
    Affiche ;
  End ;
end;

Conclusion :


Pour utiliser les composants, ajouter les unités UThumbs.pas et UThumb.pas en utilisant le menu "Composants / Ajouter un composant" dans un package existant ou dans un nouveau package.
Le composant TThumbs est alors installé.

Vous pouvez alors ouvrir le projet d'exemple Project1.dpr qui contient une fiche et des options a modifier.

Voilà. C'est un début, à développer, moi je vais m'en servir de base pour développer un viewer de galeries d'images.

Seules les images JPG sont reconnues, encore une fois c'est à titre d'exemple, il suffit d'utiliser autre chose qu'un TJPEGImage avant de convertir les images en un bitmap réduit. (cf la Procedure TThumbs.SetRepertoire(Repertoire: String) dans UThumbs et la Procedure TThumb.RedimensionneImage (Source : TJpegImage ; Dest : TBitmap) dans UThumb.

Voilà...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
11
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
14 avril 2009

j'ai solutionné mon problème en affichant qu'une ligne d'image pas plus, et sa pour corriger l'index:

Procedure TfmSkinSelect.ThumbsClick(Sender: TObject);
Begin
Thumbs.ItemClick := Thumbs.ItemClick + (Thumbs.current * Thumbs.Maximum);
//....
End;

c'est du bricolage mais sa me suffit pour mon usage, encore merci.
Messages postés
11
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
14 avril 2009

très sympa merci pour ce partage! Un bug existe quand on click sur une image après avoir DoDown ou autre bref déplacer les images lors du clic c'est toujours le nom de la 1er image qui s'affiche. J'ai du mal à m'y retrouver dans le code pour corriger sa.

Autre chose lors d'un dodow ou up on descend ou monte d'une ligne je cherche à le faire par page dur dur.
Messages postés
97
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
22 janvier 2009
2
Le composant est plutôt sympa, dommage que ce ne soit pas commenté...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.