Redimensionați proporțional o imagine care creează imagini în miniatură

În „programare” grafică a miniatură este o versiune redusă a unei imagini.

Iată o idee pentru următoarea aplicație: creați un "selector de formulare" pentru a permite utilizatorilor să selecteze și să navigați cu ușurință prin formularele deschise, afișând miniaturile tuturor acestora într-o fereastră de dialog..

Idee interesantă? Sună ca funcția „Taburi rapide” a browserului IE 7 :)

Înainte de a crea de fapt o astfel de caracteristică îngrijită pentru următoarea aplicație Delphi, trebuie să știți cum să surprindeți imaginea formularului („shot-screen shot”) și cum să o redimensionați proporțional la imaginea dorită.

Redimensionarea proporțională a imaginii: crearea graficelor de miniaturi

Mai jos veți găsi un bloc de cod pentru a lua imaginea unui formular (Form1) folosind butonul GetFormImage metodă. TBitmap-ul rezultat este apoi redimensionat pentru a se potrivi cu lățimea maximă a miniaturii (200 pixeli) și / sau înălțimea (150 pixeli).
Redimensionarea menține raportul de aspect al imaginii.

Imaginea rezultată este apoi afișată într-un control TImage, numit „Image1”.

 const   Lățime maximă = 200; maxHeight = 150; var   thumbnail: TBitmap; thumbRect: TRect; începe   thumbnail: = Form1.GetFormImage;   încerca     thumbRect.Left: = 0; thumbRect.Top: = 0;     // redimensionare proporțională     dacă thumbnail.Width> thumbnail.Height apoi     începe       thumbRect.Right: = lățime maximă; thumbRect.Bottom: = (lățime maximă * thumbnail.Height) div thumbnail.Width;     sfârșitul începe altceva       thumbRect.Bottom: = maxHeight; thumbRect.Right: = (maxHeight * thumbnail.Width) div thumbnail.Height;     Sfârșit; thumbnail.Canvas.StretchDraw (thumbRect, thumbnail); // redimensionarea imaginii     thumbnail.Width: = thumbRect.Right; thumbnail.Height: = thumbRect.Bottom;     // afișare într-un control TImage     Image1.Picture.Assign (miniatură);   in cele din urma     thumbnail.Free;   Sfârșit; Sfârșit; 

Notă: GetFormImage copiază doar zona client formular - dacă trebuie să faceți întreaga „captură de ecran” a unui formular (inclusiv granița acestuia), veți avea nevoie de o abordare diferită ... mai multe despre asta data viitoare.