Kép a sejtekben stringgrid Delphi

Ha a programozás Delphi, tedd nagyon gyakran szükséges ahhoz, hogy tervezzen, vagy egyszerűen a probléma része, a kijelző grafikus információkat. A StringGrid komponenst. annak ellenére, hogy a neve is van arra, hogy elküldje a képeket. Ha a keret a feladat, mi nem beszélünk egy egyszerű színező sejtek StringGrid bármilyen színben. nevezetesen, képkimeneti, akkor használja a Canvas tulajdon. Az ingatlan Canvas egy speciális módszert megjeleníteni a grafikus egy meghatározott koordinátarendszerben az alkatrész.







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

Ez a módszer hozza a képet a megjelölt téglalap koordinátáit (téglalap beállítás), növekvő vagy csökkenő függőlegesen és vízszintesen. A Graphic paraméter határozza meg a kimeneti kép. Ha a méretek a tartály teljesítménye nem arányos az eredeti rajz, a kép torzulhat.

O eljárást végzik a kép esemény „rajz” OnDrawCell cellában. Ebben az eljárásban azt kell:

- Egy kép feltöltése egy külső fájlt egy grafikus változó;







- jelöljük ki a cellát, amelyben a kép megjelenítéséhez;

Ennek eredményeként kap egy hasonló kód:

eljárás TMyForm.MyStringGridDrawCell (Sender: TObject; AcOI, Arow: integer; téglalap: TRect; State: TGridDrawState);
var
img: TPicture;
kezdődik
// Létrehozunk egy grafikus objektum
img: = TPicture.Create;

// betölti a grafika változó képet egy külső fájlból
img.LoadFromFile ( '001.bmp');

// feltétellel, hogy meghatározza a kívánt sejt
if ((AcOI = 1) és (Arow = 1)), akkor kezdődik

// hozzárendelés mérete szélessége és magassága a sejt
MyStringGrid.ColWidths [AcOI]: = img.Width;
MyStringGrid.RowHeights [Arow]: = img.Height;

// minta nyomtatásához az adott cellában
MyStringGrid.Canvas.StretchDraw (téglalap, img.Graphic);
végén;
végén;

Előfordul, hogy a kép túl nagy ahhoz, hogy jelenjen meg a cellában, akkor azt kell arányosan csökkenteni hozzárendelésével szélessége és magassága a kisebb méretű sejtek:

StringGrid1.ColWidths [1]: = Picture.Width div 2; // rendelni egy cella szélessége kisebb, mint 2-szer a minta
StringGrid1.RowHeights [1]: = Picture.Height div 2; // a logikai magassága a sejtek 2-szer kisebb, mint a figura

Ha például, egy rögzített szélessége a sejt, szükséges magasságának beállításához viszonyított aránya szerint a kép oldalán:

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

A példában használt fenti rajz BMP formátumban. Ha szeretné használni a JPG, akkor iratkozz fel a megfelelő könyvtárat:

Egy másik anyag ebből a szakaszból