Ändern Sie die Größe eines Bildes proportional, indem Sie eine Miniaturgrafik erstellen

In der Grafik "Programmierung" a Miniaturansicht ist eine verkleinerte Version eines Bildes.

Hier ist eine Idee für Ihre nächste Anwendung: Erstellen Sie eine "Formularauswahl", mit der Benutzer auf einfache Weise offene Formulare auswählen und durch diese navigieren können, indem Miniaturansichten von allen in einem Dialogfeld angezeigt werden.

Interessante Idee? Klingt wie die "Quick Tabs" -Funktion des IE 7-Browsers :)

Bevor Sie eine solche nette Funktion für Ihre nächste Delphi-Anwendung erstellen, müssen Sie wissen, wie Sie das Bild des Formulars aufnehmen ("Formular-Screenshot") und wie Sie die Größe proportional zum gewünschten Miniaturbild ändern können.

Proportionales Ändern der Bildgröße: Erstellen von Miniaturansichten

Unten finden Sie einen Codeblock, mit dem Sie das Bild eines Formulars (Form1) mit dem Befehl GetFormImage Methode. Die resultierende TBitmap wird dann so angepasst, dass sie der maximalen Breite (200 Pixel) und / oder Höhe (150 Pixel) der Miniaturbilder entspricht..
Durch Ändern der Größe wird das Seitenverhältnis des Bildes beibehalten.

Das resultierende Bild wird dann in einem TImage-Steuerelement mit dem Namen "Image1" angezeigt..

 const   maxWidth = 200; maxHeight = 150; var   thumbnail: TBitmap; thumbRect: TRect; Start   thumbnail: = Form1.GetFormImage;   Versuchen     thumbRect.Left: = 0; thumbRect.Top: = 0;     // proportionale Größenänderung     wenn thumbnail.Width> thumbnail.Height dann     Start       thumbRect.Right: = maxWidth; thumbRect.Bottom: = (maxWidth * thumbnail.Height) div thumbnail.Width;     Ende sonst fange an       thumbRect.Bottom: = maxHeight; thumbRect.Right: = (maxHeight * thumbnail.Width) div thumbnail.Height;     Ende; thumbnail.Canvas.StretchDraw (thumbRect, thumbnail); //Bildgröße anpassen     thumbnail.Width: = thumbRect.Right; thumbnail.Height: = thumbRect.Bottom;     // In einem TImage-Steuerelement anzeigen     Image1.Picture.Assign (thumbnail);   schließlich     thumbnail.Free;   Ende; Ende; 

Beachten Sie das GetFormImage kopiert nur den Formular-Client-Bereich - wenn Sie den gesamten "Screenshot" eines Formulars (einschließlich seines Rahmens) aufnehmen möchten, benötigen Sie einen anderen Ansatz ... mehr dazu beim nächsten Mal.