[GDI+]Ayuda Parpadeo

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
MisterA
Mensajes: 1
Registrado: 24 May 2013, 11:39

[GDI+]Ayuda Parpadeo

Mensaje por MisterA »

Hola, me gustaría si pudieran ayudarme con un codigo. Ando intentando crear un juego, pero antes tengo que hacer algunas practicas en GDI+, todo va bien, pero tengo este codigo:

Código: Seleccionar todo

#include <GDIPlus.au3>
#include <WinAPI.au3>

#include <Constants.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("ExpandEnvStrings", 1)
Opt("ExpandVarStrings", 1)

Global $WIN_X = @DesktopWidth
Global $WIN_Y = @DesktopHeight

Global $MOUSE_X
Global $MOUSE_Y

_GDIPlus_Startup()

Global $GUI = GUICreate("TEST", $WIN_X, $WIN_Y, 0, 0, $WS_POPUP)
Global $GUI_GRAPH = _GDIPlus_GraphicsCreateFromHWND($GUI)

Global $PEN_WHITE = _GDIPlus_PenCreate(0xFF999999)

GUISetBkColor(0x0,$GUI)
MouseMove($WIN_X/2,$WIN_Y/2,0)
GUISetState(@SW_SHOW,$GUI)

_MouseDraw($WIN_X/2,$WIN_Y/2,$GUI_GRAPH,$PEN_WHITE)

while 1
	Global $GUI_MSG = GUIGetMsg()
	Switch $GUI_MSG
		case $GUI_EVENT_CLOSE
			Exit
			EndSwitch
			If _MouseMove() Then
			_GraphClear($GUI_GRAPH)
			_MouseDraw($MOUSE_X,$MOUSE_Y,$GUI_GRAPH,$PEN_WHITE)
			EndIf
wend

Func _MouseDraw($MOUSE_X,$MOUSE_Y,$GUI_GRAPH,$PEN)
	_GDIPlus_GraphicsDrawLine($GUI_GRAPH,0,$MOUSE_Y,$WIN_X,$MOUSE_Y,$PEN)
	_GDIPlus_GraphicsDrawLine($GUI_GRAPH,$MOUSE_X,0,$MOUSE_X,$WIN_Y,$PEN)
EndFunc

Func _GraphClear($GUI_GRAPH)
	_GDIPlus_GraphicsClear($GUI_GRAPH,0xFF000000)
EndFunc

Func _MouseMove()
Global $MOUSE_X = _WinAPI_GetMousePosX()
Global $MOUSE_Y = _WinAPI_GetMousePosY()
Global $MOUSE_X_N = _WinAPI_GetMousePosX()
Global $MOUSE_Y_N = _WinAPI_GetMousePosY()
if $MOUSE_X <> $MOUSE_X_N or $MOUSE_Y <> $MOUSE_Y_N Then
Return True
Else
return False
EndIf
EndFunc
El codigo funciona como deberia, sin embargo cada vez que se "redibuja" todo, parpadean las lineas, y me gustaria saber si hay alguna forma de evitarlo. En el primer script que cree para que hiciera lo mismo cometí el error de poner que redibujara continuamente, y estaba continuamente parpadeando, pero ahora puse que solo lo hiciera si detecta que el ratón se ha movido. Ahora no se que mas hacer para que no parpadee.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: [GDI+]Ayuda Parpadeo

Mensaje por Chefito »

Analiza este hilo y este código. Inténtalo adaptar a lo que tu quieres, o coge las partes del código esenciales que te interese para añadirlo a tu código, y si no te sale o no entiendes algo, pregunta.
http://www.emesn.com/autoitforum/viewto ... adro#p8759

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder