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