Delphi szakemberek számára
Bitmap formátumban - DIB vagy DDB - felelős tulajdonság:
típusú TBitraapHandleType = (bmDIB, bmDDB);
ingatlan HandleType: TBitmapHandleType;
A kívánt szín mélysége bitmap lehet találni, és újratelepíteni, a változó értéke az ingatlan:
TPixelFormat = (pfDevice, pflbit, pf4bit, pfSbit, pflSbit, pf 6bit, pf24bit, pf32bit, pfCustom!);
ingatlan PixelFormat: TPixelFormat;
pfDevice mód megfelel az bitmap DDB. A színmélység 1, 4 és 8 bit per pixel - a hagyományos és magában foglalja a színpaletta képet. Más mód az ellátás azonnali tárolása a fényerő pontok mindegyikében a három alapszín - piros (R), zöld (G) és a kék (B). Bit 15 megfelel egy bit allokáció bit 5-5-5 (RGB555), 16 bit - RGB 565, 24 bit - RGB888. Mode bites 32 hasonló a 24-bites, de ez további hozzáadott egy negyedik kötelet (alfa-csatorna), amely további információkat az átláthatóság minden egyes pontja. pfCustom mód végrehajtására szánt a programozó saját grafikai tervek. A szokásos tantermi környezetben TBitmap ingatlan PixelFormat a pfCustom mód sikertelen lesz - így azt csak szükség írsz leszármazottai TBitmap.
A bitmap egyfajta erőforrás. Természetesen a TBitmap osztály betöltését támogatja az alkalmazás forrása:
eljárás LoadFromResourcelD (Bíróság: THandle; RESID: Egész szám);
eljárás LoadFromResourceName (Bíróság: THandle; const ResName: string);
Itt például - ez egy globális változó rendszer modult. tárolására egy egyedi azonosítót futó példányát a kérelmet (vagy dynamic link library).
bitmap vászon keresztül elérhető az ingatlan:
ingatlan Vászon: TCanvas;
Ezt fel lehet használni, hogy vonja le a felületet a bitmap. Kérjük, vegye figyelembe, hogy egyetlen más leszármazottai TGraphic vászon nincs.
Kezeli bitmap és paletta kaphatók tulajdonságok:
ingatlan Fogantyú: HBITMAP;
ingatlan paletta: HPALETTE;
Foglalkozik a TBitmap osztályban. szem előtt tartani, hogy az az „egy tárgy - egy fogantyút”, mert a cache mechanizmus nem megfelelő. Két módszer:
funkció ReleaseHandle: HBITMAP;
funkció ReleasePalette: HPALETTE;
visszaadja a fogantyút a bitmap és paletta, illetve majd nullázza a leírásokat, azaz a. e., hiszen voltak „adott” a felhasználó számára.
Ha semmilyen külső címre, hogy a leíró, a bitmap, és minden olyan kísérletet, hogy dolgozzon a saját vászon részlege egy kép több objektum megszakad, és a tárgy kap egy saját példányt a tartalmát leíró. Ehhez vannak módszerek:
- eljárás Alvó - eltávolítja a képet patak és elpusztítja kezeli bitmap és paletta;
- eljárás Freeimage - „felszabadító” a bitmap fogantyú későbbi felhasználásra és módosítására. Ez azt jelenti, hogy ha a fogantyú a referencia, ez duplikált; Takarmány törlődik.
A bitmap lehet monokróm és színes, hogy meghatározzák a tulajdonságok:
ingatlan Monokróm: Boolean;
Igaz érték megfelel egy monokróm bitmap. Amikor annak tartalma megváltozik, az átalakítás a kívánt formát.
Az átláthatóság a bitmap megfelelnek az alábbi tulajdonságokkal rendelkezik:
ingatlan TransparentColor: TColor;
típusú TTransparentMode = (tmAuto, tmFixed);
ingatlan TransparentMode: TTransparentMode;
Ha a tulajdonság értéke TransparentMode tmAuto módban. Az átlátszó (háttér) színt hozott a bal felső pixel. Ellenkező esetben a szín venni a tulajdonság Transparentcolor.
A bitmap lehet használni, mint egy maszk más bitmap. Ebben az esetben kiderül egy kétszínű, ahol a fehér festett háttér ponton (lásd Transparentcolor tulajdonsággal.), És a fekete - a többit. Ahhoz, hogy támogatja ezt az üzemmódot a következő módszereket és tulajdonságok:
eljárás maszk (Transparentcoior: TColor);
ingatlan MaskHandle: HBitmap;
funkció ReleaseMaskHandle: HBitmap;
Végül az utolsó figyelembe kell venni egy nagyon fontos jellemzője bittérkép TBitmap. Ha a méret a tárolás - DIB, lehetséges hozzáférni az adatokhoz legtöbb bitmap:
tulajdonság scanline [Row: egész szám]: Pointer;
Ez a tulajdonság egy tömb mutatókat a sorok a bitmap adatokat. ROW paraméter tartalmazza a sor számával. Meg kell jegyezni, hogy a legtöbb esetben a sort a bitmap megrendelt memóriában lentről felfelé, és tulajdonképpen az első fejléc tárolják után az alsó sorban. Kód, amely értéket ad vissza scanline tulajdonságait. figyelembe veszi; így ne lepődj meg, ha a paraméter értéke a ROW csökken.
Belül line adatok vannak elrendezve formátumnak megfelelően (pixelFormat). Mert pfsbit formátum egyszerű - minden byte a string felel meg egy pixel. A formátumok pfisbit és pfiebit pixel megfelel a két byte (16 bit ezen csomagolt adatokat a három csatorna), pf24bit - három bájt (egy bájt csatornánként).
Valami ehhez hasonló nézhet felvezető onMouseMove eseményeket. kibocsátja az állapotsor fényerő-információ egy adott ponton (feltételezve, hogy a formátum bitmap - 8 vagy 24 bit):
eljárás TMainForm.ImagelMouseMove (Sender: TObject; Shift: TShiftState;
Ha még nincs (Imagel Picture.Bitmap.), majd a Kilépés;
do esetében PixelFormat a
pfSbit: Statusbarl.SimpleText: = Format ( 'x: y: b: ...', [x, y, pByteArray (scanline [y]) ^ [x]]);
pf24bit: Statusbarl.SimpleText: = Format ( 'x :. y :. R:., G:., B :.',
[X, y, pByteArray (scanline [Y]) L [3 * x], pByteArray (scanline [y]) = [3 * x + l], pByteArray (scanline [y]) = [3 * x + 2] ]);
Felesleges scanline tulajdonság értéke nem változtatható meg (ez csak olvasható). De meg lehet változtatni az adatokat, amelyekhez mutat. Így akkor kap egy negatív 24 bites képek:
Var vonalon. pByteArray;
Az i: = 0 Imagel.Picture.Bitmap.Height - 1 do
A J: = 0 Imagel.Picture.Bitmap.Width * 3 - 1 do
Line ^ [j]: = 255 - line ^ [j];
A Delphi, akkor szembe a „névrokon” a tárgy - a szerkezet TBitmap. WINDOWS.PAS fájlban van leírva. Mivel mindketten tartoznak azonos domain, gyakran vannak konfliktusok hibákhoz vezethet. Emlékezzünk megkülönböztetni szinonimák struktúra, akkor használja a nevét a modul, amelyben le van írva. Tehát, ha a program egy modult a Windows és a grafikus, majd írja le a különböző italok Windows.TBitmap És Graphics.TBitmap.
var CardsDll. THandle;
CardsDll: = LoadLibraryEx ( 'cards.dll', 0, LOAD_LIBRARY__AS_DATAFILE);
Hasonlóképpen, akkor töltse le a logók a teljes fedélzeten. Megjelenítésekor térképek, attól függően, hogy nyitott vagy zárt, húzott egy TBitmap objektumot.
ha ismert, akkor // nyitott térkép