Verander de grootte van een afbeelding om miniatuurafbeeldingen te maken

In grafische weergave "programmeren" a thumbnail is een verkleinde versie van een afbeelding.

Hier is een idee voor uw volgende toepassing: maak een 'formulierkiezer' waarmee gebruikers eenvoudig open formulieren kunnen selecteren en navigeren door miniaturen van allemaal in een dialoogvenster weer te geven.

Interessant idee? Klinkt als de "Quick Tabs" -functie van de IE 7-browser :)

Voordat u daadwerkelijk zo'n handige functie voor uw volgende Delphi-toepassing maakt, moet u weten hoe u de afbeelding van het formulier ("formulier-screenshot") kunt pakken en hoe u het formaat proportioneel kunt aanpassen aan de gewenste miniatuurafbeelding.

Proportional Picture Resizing: Thumbnail Graphics maken

Hieronder vindt u een codeblok om de afbeelding van een formulier (Form1) te maken met behulp van de GetFormImage methode. De resulterende TBitmap wordt vervolgens aangepast aan de maximale miniatuurbreedte (200 pixels) en / of hoogte (150 pixels).
Door het formaat te wijzigen, blijft de beeldverhouding van de afbeelding behouden.

De resulterende afbeelding wordt vervolgens weergegeven in een TImage-besturingselement, genaamd "Image1".

 const   max. breedte = 200; maxHeight = 150; var   thumbnail: TBitmap; thumbRect: TRect; beginnen   thumbnail: = Form1.GetFormImage;   proberen     thumbRect.Left: = 0; thumbRect.Top: = 0;     // proportioneel formaat wijzigen     als thumbnail.Width> thumbnail.Hoogte vervolgens     beginnen       thumbRect.Right: = maxWidth; thumbRect.Bottom: = (maxWidth * thumbnail.Hight) div Thumbnail breedte;     einde anders beginnen       thumbRect.Bottom: = maxHeight; thumbRect.Right: = (maxHeight * thumbnail.Width) div thumbnail.Height;     einde; thumbnail.Canvas.StretchDraw (thumbRect, thumbnail); // afbeelding formaat wijzigen     thumbnail.Width: = thumbRect.Right; thumbnail.Height: = thumbRect.Bottom;     // weergeven in een TImage-besturingselement     Image1.Picture.Assign (thumbnail);   Tenslotte     thumbnail.Free;   einde; einde; 

Merk op GetFormImage kopieert alleen het clientgebied van het formulier - als u de volledige "schermafbeelding" van een formulier (inclusief de rand) moet maken, hebt u een andere aanpak nodig ... de volgende keer meer informatie.