Imagini în celule stringgrid delphi

Atunci când dezvoltăm programe în Delphi, de cele mai multe ori este nevoie de scopuri de proiectare sau pur și simplu în cadrul scopului sarcinii, pentru a afișa informații grafice. În componenta StringGrid. în ciuda numelui, există și posibilitatea de a plasa desene. În cazul în care în cadrul scopului sarcinii, nu este vorba doar de colorarea celulelor StringGrid cu orice culoare. și anume ieșirea imaginii, proprietatea Canvas este folosită pentru aceasta. Proprietatea Canvas are o metodă specială care vă permite să afișați obiecte grafice într-o locație specificată a componentei.







Canvas.StretchDraw (const Rect: TRect; Grafic: TGraphic);

Această metodă plasează imaginea în dreptunghiul specificat de coordonate (parametrul Rect), mărind sau micșorând-o vertical și orizontal. Parametrul grafic specifică imaginea de ieșire. Dacă dimensiunile containerului de ieșire nu sunt proporționale cu modelul original, imaginea poate fi distorsionată.

Procedura de afișare a imaginii se realizează în cazul "desenării" a celulei OnDrawCell. În această procedură avem nevoie de:

- încărcați o imagine dintr-un fișier extern într-o variabilă grafică;







- Selectați celula în care să se afișeze imaginea;

În final, ar trebui să obțineți un cod similar:

Procedura TMyForm.MyStringGridDrawCell (Expeditor: TObject; AcOI, Arow: Integer; Dreptunghi: TRect; Stat: TGridDrawState);
var
img: TPicture;
începe
// creați un obiect grafic
img: = TPictureCreate;

// încărcarea într-o variabilă grafică a imaginii dintr-un fișier extern
img.LoadFromFile ('001.bmp');

// condiția care definește celula dorită
dacă ((ACol = 1) și (ARow = 1)) începe apoi

// atribuiți dimensiunea celulei la lățime și înălțime
MyStringGrid.ColWidths [ACOL]: = Img.Width;
MyStringGrid.RowHeights [ARo]: = img.Height;

// tipăriți fotografia în celula curentă
MyStringGrid.Canvas.StretchDraw (Rect, img.Graphic);
se încheie;
se încheie;

Uneori, imaginea este prea mare pentru a fi trimisă către o celulă, atunci ar trebui redusă proporțional prin atribuirea unei dimensiuni mai mici lățimii și înălțimii celulelor:

StringGrid1.ColWidths [1]: = Imagine. Lățimea div 2; // atribuie lățimea celulei este de 2 ori mai mică decât cifra
StringGrid1.RowHeights [1]: = Picture.Height Div 2; // atribuiți înălțimea celulei este de 2 ori mai mică decât cifra

Dacă, de exemplu, există o lățime fixă ​​a celulei, atunci trebuie să reglați înălțimea în funcție de relația laturilor imaginii:

MyStringGrid.ColWidths [1]: = 200;
MyStringGrid.RowHeights [1]: = MyStringGrid.ColWidths [1] * (img.Width div img.Height);

Exemplul de mai sus utilizează un desen format BMP. Dacă doriți să utilizați desenul JPG, trebuie să conectați biblioteca corespunzătoare:

Mai multe din această secțiune







Trimiteți-le prietenilor: