UDF > WinAPIEx > GDI > Coordinate & Transform >


_WinAPI_ModifyWorldTransform

Modifie la transformation universelle pour un contexte de périphérique donné en utilisant le mode de modification spécifiée

#include <WinAPIGdi.au3>
_WinAPI_ModifyWorldTransform ( $hDC, $tXFORM, $iMode )

Paramètres

$hDC Handle du contexte de périphérique.
$tXFORM La structure $tagXFORM utilisée pour modifier la transformation universelle pour le contexte de périphérique donné.
$iMode Indique comment les données de la transformation modifie la transformation universelle courante.
Ce paramètre doit prendre l'une des valeurs suivantes.
$MWT_IDENTITY
$MWT_LEFTMULTIPLY
$MWT_RIGHTMULTIPLY

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarque

_WinAPI_ModifyWorldTransform() échouera si le mode graphique pour le contexte de périphérique spécifié n'a pas été mis à $GM_ADVANCED en appelant auparavant _WinAPI_SetGraphicsMode().
De même, il ne sera pas possible de réinitialiser le mode graphique pour le contexte de périphérique en mode $GM_COMPATIBLE par défaut, sans que la transformation universelle ait été d'abord réinitialiser à la transformation identique par défaut en appelant _WinAPI_SetWorldTransform().

En relation

_WinAPI_SetWorldTransform

Voir aussi

Consultez ModifyWorldTransform dans la librairie MSDN.

Exemple

#include <APIGdiConstants.au3>
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPIMisc.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

Global Const $PI = 4 * ATan(1)

; Crée une GUI
Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 340, 340)
Local $idPic = GUICtrlCreatePic('', 0, 0, 320, 320)
Local $hPic = GUICtrlGetHandle($idPic)

; Crée un bitmap
Local $hDC = _WinAPI_GetDC($hPic)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hBitmap = _WinAPI_CreateCompatibleBitmapEx($hDC, 340, 340, _WinAPI_SwitchColor(_WinAPI_GetSysColor($COLOR_3DFACE)))
Local $hMemSv = _WinAPI_SelectObject($hMemDC, $hBitmap)

; Définit le mode graphique avancé pour être en mesure de définir une transformation universelle 
_WinAPI_SetGraphicsMode($hMemDC, $GM_ADVANCED)

; Créez une matrice de rotation de 5 degrés
Local $nAngle = $PI / 36
Local $iXc = 170
Local $iYc = 170
Local $nM11 = Cos($nAngle)
Local $nM12 = Sin($nAngle)
Local $nM21 = -$nM12
Local $nM22 = $nM11
Local $nDx = $iXc * (1 - Cos($nAngle)) + $iYc * Sin($nAngle)
Local $nDy = $iYc * (1 - Cos($nAngle)) - $iXc * Sin($nAngle)
Local $tXFORM = _WinAPI_CreateTransform($nM11, $nM12, $nM21, $nM22, $nDx, $nDy)

; Dessine des ellipses par rotation
Local $hBrush = _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($NULL_BRUSH))
Local $hPen = _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_PEN))
_WinAPI_SetDCPenColor($hMemDC, 0xDD0000)
Local $tRECT = _WinAPI_CreateRect($iXc - 150, $iYc - 40, $iXc + 150, $iYc + 40)
For $i = 0 To 350 Step 5
    _WinAPI_ModifyWorldTransform($hMemDC, $tXFORM, $MWT_LEFTMULTIPLY)
    _WinAPI_Ellipse($hMemDC, $tRECT)
Next

; Libère les objets
_WinAPI_ReleaseDC($hPic, $hDC)
_WinAPI_SelectObject($hMemDC, $hBrush)
_WinAPI_SelectObject($hMemDC, $hPen)
_WinAPI_SelectObject($hMemDC, $hMemSv)
_WinAPI_DeleteDC($hMemDC)

; Définit le bitmap dans le contrôle Picture
_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
Local $hObj = _SendMessage($hPic, $STM_GETIMAGE)
If $hObj <> $hBitmap Then
    _WinAPI_DeleteObject($hBitmap)
EndIf

GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE