Încărcarea unei imagini sau a unui cursor dintr-un fișier res

Încărcarea imaginilor și a cursorilor din fișierele RES

Imaginile și cursoarele pot fi stocate în fișiere de resurse (RES) și pot fi legate (conectate) la fișierul EXE al aplicației. RES-fișiere pot fi create cu Editor Delphi instrumente de imagine și Atelier de resurse Borland, incluse în livrare Delphi RAD Pack. Imaginile și cursorii stocate în fișierele RES (după ambalarea lor în EXE sau DLL) pot fi extrase utilizând funcțiile API LoadBitmap și LoadCursor respectiv.







Funcția API LoadBitmap este definită după cum urmează:

Primul parametru trebuie să conțină descriptorul de module (EXE sau DLL) care conține fișierul RES din care doriți să preluați resursa. Delphi stochează descriptorul fișierului EXE rulat într-o variabilă globală numită Hinstance. În exemplul de mai jos, presupunem că modulul din care încercăm să încărcăm o imagine este aplicația dvs. Cu toate acestea, modulul ar putea fi un alt fișier EXE sau DLL. Următorul exemplu încarcă o imagine numită BITMAP_1 din fișierul RES care este conectat la fișierul EXE al aplicației:







Există un dezavantaj al utilizării API-ului LoadBitmap: LoadBitmap este încă un apel API către Windows 3.0 și încarcă imaginea numai ca DDB (Device Dependent Bitmaps). Acest lucru poate cauza probleme cu o paletă de culori atunci când încărcarea DIB (Dispozitiv Independent Bitmap) din RES-fișier. Codul de mai jos poate fi folosit pentru extragerea DIB-urilor din fișierele RES. Acest cod încarcă imaginea ca o resursă partajată, o transmite în flux și apoi face ca Delphi să sune LoadFromStream, care implementează automat paleta.

Funcția API LoadCursor este definită după cum urmează:

Apoi, adăugați următoarele două linii la handlerul evenimentului pentru evenimentul OnCreate:

sau puteți schimba unul dintre cursorii standard Delphi așa cum se arată mai jos (constantele cursorului sunt descrise în ajutorul online din articolul Cursors Property):

Notă: într-o situație normală, trebuie să ștergeți toate resursele de cursor folosind DeleteCursor, însă în Delphi acest lucru nu este necesar, deoarece Delphi în sine șterge toți cursorii din matricea cursoarelor.







Articole similare

Trimiteți-le prietenilor: