|
Api Windows |
|
Anonyme
|
Je cherche un exemple de code avec les API "AlphaBlend" et "GetDIBits" je n'arrive pas a les faire fonctionner correctement . ----------------------------------------------------------
BLENDFUNCTION est une structure
BlendOp est un caractère
BlendFlags est un caractère
SourceConstantAlpha est un caractère
AlphaFormat est un caractère
FIN
BF est un BLENDFUNCTION
LBF est un entier
hdcSrc est un entier = AppelDLL32("user32", "GetDC", Handle("Image1"))
hdc est un entier = AppelDLL32("user32", "GetDC", Handle("Image2"))
BF:BlendOp = 0
BF:BlendFlags = 0
BF:AlphaFormat = 0
BF:SourceConstantAlpha = 128
res = API("kernel32","RtlMoveMemory",&LBF,&BF,4)
res = API("MSIMG32","AlphaBlend", hdc,0,0,100,100, hdcSrc,0,0,100,100,&LBF)
-------------------------------------------------------
BITMAPINFOHEADER est une structure
biSize est un entier //Type C : DWORD
biWidth est un entier //Type C : LONG
biHeight est un entier //Type C : LONG
biPlanes est un entier sur 2 octets //Type C : WORD
biBitCount est un entier sur 2 octets //Type C : WORD
biCompression est un entier //Type C : DWORD
biSizeImage est un entier //Type C : DWORD
biXPelsPerMeter est un entier //Type C : LONG
biYPelsPerMeter est un entier //Type C : LONG
biClrUsed est un entier //Type C : DWORD
biClrImportant est un entier //Type C : DWORD
FIN
RGBQUAD est une structure
rgbBlue est un caractère //Type C : BYTE
rgbGreen est un caractère //Type C : BYTE
rgbRed est un caractère //Type C : BYTE
rgbReserved est un caractère //Type C : BYTE
FIN
BITMAPINFO est une structure
bmiHeader est un BITMAPINFOHEADER //BITMAPINFOHEADER est une autre structure
bmiColors est un RGBQUAD //RGBQUAD est une autre structure
FIN
RGBQ1 est un tableau dynamique de 100*120 RGBQUAD
BMPINFO est un BITMAPINFO
BMPINFOH est un BITMAPINFOHEADER
BMPINFOH:biBitCount = 32
BMPINFOH:biHeight = 100
BMPINFOH:biWidth = 120
BMPINFOH:biPlanes = 1
BMPINFOH:biSize = Dimension(BMPINFOH)
BMPINFO:bmiHeader = BMPINFOH
RetourFonction est un entier // Type C :INT
hImage1 est un entier = Handle("image1")
hdc est un entier = AppelDLL32("user32", "GetDC", hImage1)
RetourFonction=API("GDI32","GetDIBits",hdc,hImage1,0,100,&RGBQ1,&BMPINFO,0)
Contribution le : 22/10/2003 14:25
|
|
|
Re: Api Windows |
|
do_mi_ni_que@hotmail.com
|
Avez vous trouve la solution , j'ai beau chercher moi aussi , je trouve pas !
BITMAPINFOHEADER est une structure biSize est un entier //Type C : DWORD biWidth est un entier //Type C : LONG biHeight est un entier //Type C : LONG biPlanes est un entier sur 2 octets sans signe //Type C : WORD biBitCount est un entier sur 2 octets sans signe//Type C : WORD biCompression est un entier //Type C : DWORD biSizeImage est un entier //Type C : DWORD biXPelsPerMeter est un entier //Type C : LONG biYPelsPerMeter est un entier //Type C : LONG biClrUsed est un entier //Type C : DWORD biClrImportant est un entier //Type C : DWORD FIN
RGBQUAD est une structure // rgbBlue est un caractère // rgbGreen est un caractère //Type C : BYTE // rgbRed est un caractère //Type C : BYTE // rgbReserved est un caractère //Type C : BYTE FIN
bmiHeader est un BITMAPINFOHEADER //BITMAPINFOHEADER est une autre structure bmiColors est un tableau de 90000 RGBQUAD //RGBQUAD est une autre structure
bmiHeader:biSize = Dimension(bmiHeader) bmiHeader:biHeight = 300 bmiHeader:biWidth = 300 bmiHeader:biPlanes = 1 bmiHeader:biBitCount = 32
RetourFonction est un entier // Type C :INT
hImage1 est un entier = Handle("IMAGE2") hdc est un entier = AppelDLL32("user32", "GetDC",hImage1)
RetourFonction=AppelDLL32("GDI32","GetDIBits",hdc,hImage1,1,100,&bmiColors,&bmiHeader,0)
Trace(bmiHeader:biSizeImage)
Contribution le : 15/12/2005 17:37
|
|
|
Re: Api Windows |
|
Animateur WDF
Inscrit: 19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
|
Bonjour,
Il faudrait déjà avoir une structure qui a la bonne taille en mémoire (le bon nombre d'octets).
>>> Un DWORD est un entier sur 4 octets sans signe . >>> Un LONG est un entier (Un entier à partir de windev 7 = 8 octets)
Bon dév.,
Totof
Contribution le : 15/12/2005 17:55
|
|
|
Re: Api Windows |
|
Anonyme
|
Merci !! j'ai corrigé mais ca fonctions toujours pas , c'est la première fois qu'une api me pose autant problème !
Le but est de recupérer les valeurs du champs "image1" J'ai vérifié en VB ( la structure BITMAPINFOHEADER fait bien 40 octets ) As tu une idée ???
BITMAPINFOHEADER est une structure biSize est un entier sur 4 octets sans signe //Type C : DWORD biWidth est un entier //Type C : LONG biHeight est un entier //Type C : LONG biPlanes est un entier sur 2 octets sans signe //Type C : WORD biBitCount est un entier sur 2 octets sans signe //Type C : WORD biCompression est un entier //Type C : DWORD biSizeImage est un entier sur 4 octets sans signe//Type C : DWORD biXPelsPerMeter est un entier //Type C : LONG biYPelsPerMeter est un entier //Type C : LONG biClrUsed est un entier sur 4 octets sans signe //Type C : DWORD biClrImportant est un entier sur 4 octets sans signe //Type C : DWORD // Long data type = entier sur 4 octets avec signe FIN
RGBQUAD est une structure rgbBlue est un caractère //Type C : BYTE rgbGreen est un caractère //Type C : BYTE rgbRed est un caractère //Type C : BYTE rgbReserved est un caractère //Type C : BYTE FIN BITMAPINF est une structure bmiHeader est un BITMAPINFOHEADER //BITMAPINFOHEADER est une autre structure bmiColors est un RGBQUAD //RGBQUAD est une autre structure FIN
RGBQ1 est un tableau de 100*100 RGBQUAD Trace(Dimension(RGBQ1)) BMPINFO est un BITMAPINF BMPINFOH est un BITMAPINFOHEADER
BMPINFOH:biBitCount = 32 // ou 24 si on veut BMPINFOH:biHeight = 100 BMPINFOH:biWidth = 100 BMPINFOH:biPlanes = 1 BMPINFOH:biCompression = 0 BMPINFOH:biSize = Dimension(BMPINFOH)
BMPINFO:bmiHeader = BMPINFOH
RetourFonction est un entier // Type C :INT
hImage1 est un entier = Handle("image1") hdc est un entier = AppelDLL32("user32", "GetDC", hImage1)
RetourFonction=API("GDI32","GetDIBits",hdc,hImage1,10,100,&RGBQ1,&BMPINFO,0)
Trace(RetourFonction) // RetourFonction renvoi le nombre de lignes copiées en mémoire sinon =0 en échec !!!!
Contribution le : 16/12/2005 14:33
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|