Delphi pentru profesioniști

Pentru format bitmap - DIB sau DDB - proprietate responsabilă:

tip TBitraapHandleType = (bmDIB, bmDDB);

HandleType proprietate: TBitmapHandleType;

Adâncimea dorită de bitmap culoare poate fi găsit și reinstalat, modificarea valorii proprietății:

TPixelFormat = (pfDevice, pflbit, pf4bit, pfSbit, pflSbit, PF 6Bit, pf24bit, pf32bit, pfCustom!);

PixelFormat proprietate: TPixelFormat;

Modul pfDevice corespunde DDB bitmap. Adâncimea culorii de 1, 4 și 8 biți per pixel - tradițional și implică prezența unei imagini paletă. Alte moduri de îngrijire pentru depozitarea imediată a luminozității de puncte în fiecare dintre cele trei culori primare - roșu (R), verde (G) și albastru (B). Bit 15 corespunde o alocare de biți de biți 5-5-5 (RGB555), 16 biți - RGB 565, 24 de biți - RGB888. bit Mode 32 este similar cu 24 de biți, dar se adaugă suplimentar un al patrulea frânghie (canal alfa), care conține informații suplimentare cu privire la transparența fiecărui punct. Modul pfCustom este destinat pentru punerea în aplicare a propriilor modele grafice programatorului. Într-un standard de proprietăți TBitmap setare clasă PixelFormat în modul pfCustom va eșua - astfel încât să-l utilizați numai nevoie să scrie urmașii TBitmap.

Un bitmap este un tip de resursă. Desigur, clasa TBitmap suportă încărcarea resursei de aplicare:

Procedura LoadFromResourcelD (Instanțà: THandle; barbotare: Integer);

Procedura LoadFromResourceName (Instanțà: THandle; ResName const: string);

Aici exemplu - este un modul de sistem variabilă la nivel mondial. stocarea unui exemplar unic de identificare de funcționare a aplicației (sau bibliotecă de legături dinamice).

panza bitmap disponibile prin proprietatea:

Canvas proprietate: TCanvas;

Acesta poate fi folosit pentru a desena pe suprafața bitmap. Vă rugăm să rețineți că nici un alt descendenții TGraphic panza nu au.

Manere bitmap și paleta sunt disponibile ca proprietăți:

Mâner proprietate: HBITMAP;

Proprietate Paletă: HPALETTE;

În care se ocupă cu clasa TBitmap. ține cont de faptul că principiul „un obiect - un mâner“, din cauza mecanismului de cache este incorectă. Două metode:

Funcția ReleaseHandle: HBITMAP;

Funcția ReleasePalette: HPALETTE;

returnează un mâner la un bitmap și paleta, respectiv, și apoi se egalează cu zero descriptorii, adică. e., așa cum au fost „dat“ pentru utilizator.

Atunci când orice adresă externă la descriptorul bitmap, și orice încercare de a desena pe panza divizia sa de o imagine mai multe obiecte este întreruptă, iar obiectul devine propria copie a conținutului descriptor. Pentru a face acest lucru, există metode:

  • Procedura Inactive - descarcă fluxul de imagine și distruge mânere bitmap și paleta;
  • Procedura FreeImage - „eliberatoare“ mânerul bitmap pentru utilizarea și modificarea ulterioară. Acest lucru înseamnă că, în cazul în care mânerul are o referință, este duplicată; Hraneste eliminate.

Bitmap poate fi alb-negru și culoare care determină proprietățile:

Monocrom proprietate: Boolean;

Adevărata valoare corespunde unui bitmap monocrom. Atunci când conținutul său este schimbat, conversia la forma cerută.

Pentru transparența bitmap îndeplinesc următoarele proprietăți:

TransparentColor proprietate: TColor;

tip TTransparentMode = (tmAuto, tmFixed);

TransparentMode proprietate: TTransparentMode;

În cazul în care proprietatea este setată pe modul TransparentMode tmAuto. pentru transparentă (fond) culoarea este luată pixelului din stânga sus. În caz contrar, culoarea este preluată din Transparentcolor de proprietate.

Bitmap poate fi folosit ca o mască pentru alte bitmap-uri. În acest caz, se transformă într-o două culori, în cazul în care alb pictat punctul de fond (a se vedea Transparentcolor proprietate.), Și negru - restul. Pentru a sprijini acest mod sunt următoarele metode și proprietăți:

Procedura Masca (Transparentcoior: TColor);

Proprietate MaskHandle: HBITMAP;

Funcția ReleaseMaskHandle: HBITMAP;

În cele din urmă, ultimul dintre contul va fi considerat un foarte important pic caracteristică hartă TBitmap. În cazul în care formatul de stocare ea - DIB, este posibil accesul la datele cele mai multe bitmap:

Scanline proprietate [Row: Integer]: pointer;

Această proprietate este o serie de indicii pentru rândurile de date bitmap. Parametrul ROW conține numărul rândului. Trebuie amintit faptul că, în cele mai multe cazuri linia de demarcație în bitmap sunt ordonate în memoria de jos în sus și, de fapt, primul antet este stocată după linia de jos. Codul care returnează o valoare de proprietăți scanline. ia în considerare; asa ca nu fi surprins dacă, prin valoarea parametrului a ROW este redusă.

linie de date în interiorul sunt aranjate în conformitate cu formatul (pixelFormat). Pentru pfsbit format este simplu - fiecare octet din șirul corespunde unui pixel. Pentru formatele pfisbit și pfiebit pixel corespunde la doi octeți (16 biți în aceste date ambalate de trei canale), pf24bit - trei octeți (un octet per canal).

Ceva de genul asta ar putea arata handler onmousemove evenimente. scoate informația luminanța zonei de stare la un anumit punct (presupunând că formatul bitmap - 8 sau 24 de biți):

Procedura TMainForm.ImagelMouseMove (Expeditor: TObject; Shift: TShiftState;

în cazul în care nu sunt atribuite (Imagel Picture.Bitmap.), apoi Exit;

face caz de PixelFormat

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] ]);

Valoarea Inutil de proprietate scanline nu poate fi modificat (este read-only). Dar puteți modifica datele la care. Asta e modul în care puteți obține o imagine negativă de 24 de biți:

line Var. pByteArray;

Pentru i: = 0 până la Imagel.Picture.Bitmap.Height - 1 do

Pentru j: = 0 până la Imagel.Picture.Bitmap.Width * 3 - 1 do

Linia ^ [j]: = 255 - Linia ^ [j];

În Delphi, puteți confrunta cu o „omonim“ a obiectului - structura TBitmap. WINDOWS.PAS descris în fișierul. Deoarece ambele aparțin aceluiași domeniu, există adesea conflicte care duc la erori. Să ne amintim pentru a distinge structura de sinonime, ar trebui să utilizați numele modulului în care sunt descrise. Deci, dacă programul are un modul de Windows și grafică, și apoi să descrie tipurile de băuturi Windows.TBitmap și Graphics.TBitmap.

var CardsDll. THandle;

CardsDll: = LoadLibraryEx ( 'cards.dll', 0, LOAD_LIBRARY__AS_DATAFILE);

În mod similar, puteți descărca bitmap-uri pentru întreaga punte. La afișarea hărților, în funcție de faptul dacă este deschis sau închis, trase un obiect TBitmap.

dacă se cunoaște apoi // hartă deschis

Știri
Cavalerii Teoria eter

Acest Kornilov a scris pe pagina sa de pe rețeaua socială.

Potrivit lui Kornilov, atunci mesajul său a fost întâmpinată cu neîncredere.

Acum, Vladimir Kornilov a decis să se întoarcă la acest subiect, în legătură cu care se publică în fotografiile mele de pe Facebook misterioase israelienilor care au luat parte la masacrul de la Odessa.

Printre multele întrebări pe care Kornilov, a spus el, ar dori să obțină un răspuns, de exemplu, sunt după cum urmează:

„De ce au intrat accidental în Odesa cu echipament medical, mănuși de cauciuc, în cazul în care au știut dinainte că va fi rănit și ucis? Sau de ce acest luptător uitat brusc limba engleză, atunci când a dat seama că dosarul său?“.

apa lacurilor, mărilor și oceanelor prin lushariya --------- nordice roti spre m Lc - p-in-k-i, iar apa din polushariya sudic - ra - conductive dizolvată -sya- po- h asul săgeată - Obra-zuya- firma -Oral-furnica-ski-e-ovo-apă.

Principalul motiv pentru vârtejuri de rotație sunt vânt locale.
Cu cât viteza vântului este mai mare viteza de rotație a vîrtejuri și ca o consecință, mai mari vârtejuri forței centrifugale, contribuind astfel la creșterea nivelului apei mărilor și oceanelor.
Și cea mai mică forța centrifugă a vârtejuri, este mai scăzut nivelul apei mărilor și oceanelor.

O viteză de curgere pe perimetrul mărilor și oceanelor nu este același lucru peste tot și depinde de adâncimea coastei. În partea superficială a vitezei curenților de mare este crescut, iar în partea adâncă a mării este redusă.
fluctuațiile sezoniere ale nivelului apei ceas-tsya nu în jurul valorii de coasta mărilor și oceanelor-s, dar numai în acele coaste unde -mare viteza unghiulară a fluxurilor și a forței centrifuge, prin urmare, de mare a apei. (Centrifug forța F = v / r).
În zonele de coastă drepte, în cazul în care curenții nu au nici un nivel de apă cu viteză unghiulară nu crește.