Re: Afficher un DXF en utilisant GDI+ et DotNet
Posté par gpowerz le 20/4/2006 13:09:59
J'ai voulu tester GDIPlus directement dans Windev en appellant directement la FlatAPI les fonctions repondent bien
mais il se s'affiche rien dans la fenêtre Windev (champ Image,HDC de l'écran, HDC de la fenêtre).
J'ai tout essayé mais rien de rien et pourtant j'ai bien un token valide
voici les bouts de code qui ont l'air correct (car le même code fonctionne en VB)
PROCEDURE Constructeur(HDC=Null,Ver=1)
:Hlib = ChargeDLL("gdiplus.dll")
:GDIPlusStartUp(Ver)
:GdiCreateFromHDC(HDC)
PROCEDURE GDIPlusStartUp(Version)
h est un entier
s est un Variant = Null
Token est un entier
Status est un entier
gdiplusstartout est un Variant
:Version = Version
:GdiIN:GdiplusVersion = :Version
:GdiIN:DebugEventCallback = Null
:GdiIN:SuppressBackgroundThread = 0
:GdiIN:SuppressExternalCodecs = 0
//ChargeDLL("gdiplus.dll")
gdiplusstartout=Null
:GStatus = AppelDLL32("gdiplus.dll","GdiplusStartup",&:hToKen,&:GdiIN,gdiplusstartout)
Trace("token="+:hToKen+" status="+:GStatus)
PROCEDURE GdiCreateFromHDC(HDC)
Ret est un entier
SI :GStatus <>0 ALORS RETOUR
:hDC = HDC
Ret =AppelDLL32("gdiplus.dll","GdipCreateFromHDC",:hDC,&:GpGraphics)
....
PROCEDURE GdipFillRectangle(X1,Y1,X2,Y2,pHBrush=0)
hBrush est un entier
Ret est un entier
pX1 est un entier sur 4 octets = X1
pY1 est un entier sur 4 octets = Y1
pX2 est un entier sur 4 octets = X2
pY2 est un entier sur 4 octets = Y2
SI :GStatus <>0 OU :GpGraphics=0 ALORS RETOUR
SI pHBrush = 0 ALORS hBrush = :hBrush SINON hBrush = pHBrush
Ret = API("gdiplus.dll","GdipFillRectangle",:GpGraphics,hBrush,pX1,pY1,pX2,pY2)
//Ret = AppelDLL32("gdiplus.dll","GdipCreateSolidFill",0x2000FF,&:hBrush)
//ret = AppelDLL32("gdiplus.dll","GdipFillRectangle",:GpGraphics,:hBrush,0,0,1000,1000)
Trace("ret="+Ret+" hbrush="+hBrush )
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=3838&post_id=16297