Dans la "programmation" graphique a la vignette est une version réduite d'une image.
Voici une idée pour votre prochaine application: créer un "sélecteur de formulaire" pour permettre aux utilisateurs de sélectionner et de naviguer facilement dans les formulaires ouverts en affichant leurs miniatures dans une boîte de dialogue.
Idée intéressante? Cela ressemble à la fonction "Quick Tabs" du navigateur IE 7 :)
Avant de créer réellement une telle fonctionnalité pour votre prochaine application Delphi, vous devez savoir comment récupérer l'image du formulaire ("capture d'écran de formulaire") et comment la redimensionner proportionnellement à l'image miniature souhaitée.
Vous trouverez ci-dessous un bloc de code pour prendre l'image d'un formulaire (Form1) en utilisant le GetFormImage méthode. Le TBitmap résultant est ensuite redimensionné pour s'adapter à la largeur maximale des vignettes (200 pixels) et / ou à la hauteur (150 pixels).
Le redimensionnement conserve le rapport hauteur / largeur de l'image.
L'image résultante est ensuite affichée dans un contrôle TImage, nommé "Image1".
const maxWidth = 200; maxHeight = 150; var vignette: TBitmap; thumbRect: TRect; commencer vignette: = Form1.GetFormImage; essayer thumbRect.Left: = 0; thumbRect.Top: = 0; // redimensionnement proportionnel si thumbnail.Width> thumbnail.Height ensuite commencer thumbRect.Right: = maxWidth; thumbRect.Bottom: = (maxWidth * thumbnail.Height) div thumbnail.Width; fin sinon commencer thumbRect.Bottom: = maxHeight; thumbRect.Right: = (maxHeight * thumbnail.Width) div thumbnail.Height; fin; thumbnail.Canvas.StretchDraw (thumbRect, thumbnail); // redimensionner l'image thumbnail.Width: = thumbRect.Right; thumbnail.Height: = thumbRect.Bottom; // affichage dans un champ TImage Image1.Picture.Assign (miniature); enfin thumbnail.Free; fin; fin;
Noter la GetFormImage copie uniquement la zone client du formulaire - si vous avez besoin de prendre toute la "capture d'écran" d'un formulaire (y compris sa bordure), vous aurez besoin d'une approche différente… en savoir plus la prochaine fois.