Je suis une quiche en GDI plus ou pas, mais voici comment je tourne les images qu'il me faut tourner.
C'est un extrait de code brut de décoffrage, je te laisse zieuter l'aide de chaque fonction, t'es un grand garçon.
Code : Tout sélectionner
[spoiler=]Global Enum _
$RotateNoneFlipNone = 0, _
$Rotate180FlipXY = $RotateNoneFlipNone, _
$Rotate90FlipNone = 1, _
$Rotate270FlipXY = $Rotate90FlipNone, _
$Rotate180FlipNone = 2, _
$Rotate270FlipNone = 3, _
$RotateNoneFlipX = 4, _
$Rotate180FlipY = $RotateNoneFlipX, _
$Rotate90FlipX = 5, _
$Rotate270FlipY = $Rotate90FlipX, _
$Rotate180FlipX = 6, _
$RotateNoneFlipY = $Rotate180FlipX, _
$RotateNoneFlipXY = $Rotate180FlipX, _
$Rotate90FlipY = 7, _
$Rotate270FlipX = $Rotate90FlipY, _
$Rotate90FlipXY = $Rotate90FlipY
Local $hImage = _GDIPlus_ImageLoadFromFile($sFileName)
DllCall($ghGDIPDll, "int", "GdipImageRotateFlip", "hwnd", $hImage, "long", $Rotate90FlipNone)
Local $iIW = _GDIPlus_ImageGetWidth($hImage)
Local $iIH = _GDIPlus_ImageGetHeight($hImage)
Local $Result = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iIW, $iIH, $GDIP_ILMREAD, $GDIP_PXF24RGB)
;Get the returned values of _GDIPlus_BitmapLockBits
Local $Scan0 = DllStructGetData($Result, "Scan0")
[/spoiler]
Pour la suite, j'ai besoin ici d'une structure pour accéder aux rangées de pixels RGB dans une structure, mais vois comment tu emploies le graphique pour tes propres besoins.
Maintenant si tu as vraiment besoin d'une fonction la plus générique possible pour la transformation de tes sprites, tu es en effet contraint de te farcir le calcul de la matrice idoine. C'est de la géométrie 2D bête.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.