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
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer


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
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


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.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2