• 31.05.2018
  • 3 minute de citit

In acest articol

Windows GDI + expune un API plat care consta din aproximativ 600 de functii, care sunt implementate in Gdiplus.dll si declarate in Gdiplusflat.h. Functiile din API-ul plat GDI + sunt impachetate de o colectie de aproximativ 40 de clase C ++. Este recomandat sa nu apelati direct functiile din API-ul plat. Ori de cate ori efectuati apeluri catre GDI +, ar trebui sa faceti acest lucru apeland metodele si functiile furnizate de impachetarile C ++. Serviciile de asistenta pentru produse Microsoft nu vor oferi suport pentru codul care apeleaza direct API-ul plat.

Ca alternativa la impachetarile C ++, Microsoft .NET Framework ofera un set de clase de impachetare de cod gestionat pentru GDI +. Impachetarile de coduri gestionate pentru GDI + apartin urmatoarelor spatii de nume.

  • Sistem.Desenare
  • System.Drawing.Drawing2D
  • System.Drawing.Imaging
  • System.Drawing.Text

Ambele seturi de impachetari (C ++ si cod gestionat) utilizeaza o abordare orientata obiect, deci exista unele diferente intre modul in care parametrii sunt transferati la metodele wrapper si modul in care parametrii sunt trecuti catre functii in API-ul plat. De exemplu, unul dintre impachetarile C ++ este clasa Matrix . Fiecare obiect Matrix are un camp, nativeMatrix , care indica o variabila interna de tip GpMatrix . Cand treceti parametrii catre o metoda a unui obiect Matrix , acea metoda trece acei parametri (sau un set de parametri inruditi) impreuna cu una dintre functiile din API-ul GDI + plat. Dar aceasta metoda trece si de nativeMatrix(ca parametru de intrare) la functia API plana. Urmatorul cod arata cum metoda Matrix :: Shear apeleaza functia GdipShearMatrix (matricea GpMatrix *, REAL shearX, REAL shearY, GpMatrixOrder order) .

Status Shear (IN REAL shearX, IN REAL shearY, IN MatrixOrder order = MatrixOrderPrepend) {… GdipShearMatrix (nativeMatrix, shearX, shearY, ordine); …}

Constructorii Matrix transmit adresa unei variabile de pointer GpMatrix (ca parametru de iesire) functiei GdipCreateMatrix (matrice GpMatrix **) . GdipCreateMatrix creeaza si initializeaza o variabila GpMatrix interna si apoi atribuie adresa GpMatrix variabilei pointer. Apoi constructorul copiaza valoarea indicatorului in campul nativeMatrix .

Matrix () {GpMatrix * matrix = NULL; lastResult = DllExports :: GdipCreateMatrix (& matrix); SetNativeMatrix (matrice); } VOID SetNativeMatrix (GpMatrix * nativeMatrix) {this-> nativeMatrix = nativeMatrix; }

Metodele de clonare din clasele wrapper nu primesc parametri, dar trec adesea doi parametri catre functia subiacenta in API-ul GDI + plat. De exemplu, metoda Matrix :: Clone trece nativeMatrix (ca parametru de intrare) si adresa unei variabile de pointer GpMatrix (ca parametru de iesire) la functia GdipCloneMatrix . Urmatorul cod arata cum metoda Matrix :: Clone apeleaza functia GdipCloneMatrix (matricea GpMatrix *, GpMatrix ** cloneMatrix) .

Matrix * Clone () const {GpMatrix * cloneMatrix = NULL; … GdipCloneMatrix (nativeMatrix, & cloneMatrix)); … returneaza noua Matrix (cloneMatrix); }

Functiile din API-ul plat returneaza o valoare de tip GpStatus. Enumerarea GpStatus este identica cu enumerarea Status utilizata de metodele wrapper. In GdiplusGpStubs.h, GpStatus este definit dupa cum urmeaza:

typedef Status GpStatus;

Majoritatea metodelor din clasele wrapper returneaza o valoare de stare care indica daca metoda a reusit. Cu toate acestea, unele dintre metodele de impachetare returneaza valori de stare. Cand apelati o metoda wrapper care returneaza o valoare de stare, metoda wrapper transmite parametrii corespunzatori functiei subiacente in API-ul GDI + plat. De exemplu, clasa Matrix are o metoda Matrix :: IsInvertible care trece campul nativeMatrix si si adresa unei variabile BOOL (ca parametru de iesire) catre functia GdipIsMatrixInvertible . Urmatorul cod arata cum metoda Matrix :: IsInvertible apeleaza GdipIsMatrixInvertible (matricea GDIPCONST GpMatrix *, rezultatul BOOL *) functie.

BOOL IsInvertible () const {rezultatul BOOL = FALS; … GdipIsMatrixInvertible (nativeMatrix, & result); rezultatul returului; }

Un alt dintre ambalaje este clasa Color . Un obiect Color are un singur camp de tip ARGB , care este definit ca un DWORD . Cand treceti un obiect Color uneia dintre metodele de impachetare, metoda respectiva trece campul ARGB de -a lungul functiei subiacente in API-ul plat GDI +. Urmatorul cod arata cum metoda Pen :: SetColor apeleaza functia GdipSetPenColor (stilou GpPen *, ARGB argb) . Metoda Color :: GetValue returneaza valoarea campului ARGB .

Status SetColor (IN const Culoare si culoare) {… GdipSetPenColor (nativePen, color.GetValue ()); }

Urmatoarele subiecte arata relatia dintre API-ul GDI + plat si metodele de impachetare C ++.

  • Functii AdjustableArrowCap
  • Functii Bitmap
  • Functii de pensulare
  • Functii CachedBitmap
  • Functii CustomLineCap
  • Functii Font
  • FontFamilyFunctions
  • Functii grafice
  • Functii GraphicsPath
  • Functii HatchBrush
  • Functii de imagine
  • Functii ImageAttributes
  • Functii LinearGradientBrush
  • Functii Matrix
  • Functii de memorie
  • Functii de notificare
  • Functii PathGradientBrush
  • Functii PathIterator
  • Functii stilou
  • Functii de regiune
  • Functii SolidBrush
  • Functii Format sir
  • Functii text
  • Functii perie textura

cento xcento.net riley reid schoolgirl
video porno xxx italiano rita porn
troie in maschera rita xxx
film porno free streaming robberta gemma
nikita bellucci xxx robera gemma
deborah sorrentino porn roberra gemma
kelly stafford porn roberta anal
film porno italiani mogli roberta farnese
cento x cento film online roberta farnese centoxcento
prima xxx roberta farnese hard
maestra xxx roberta farnese hard
roberta gemma free roberta farnese marito
shona river xxx roberta farnese phica
siffredi hard academy roberta farnese porno
porno all’italiana roberta farnese streaming
model fucked roberta farnese torrent
italia xxx porno roberta farnese tube
italian movies xxx roberta farnese video
valeria curtis porn roberta farnese video hard
malena la.pugliese video roberta farnese xxx