SoloCodigo
Programación General => C/C++ => Visual C++ => Mensaje iniciado por: kasper en Jueves 1 de Abril de 2004, 18:26
-
Hola :hola:
La duda es como sigue:
Estoy haciendo un programa parecido a un Paint de Windows :comp: . Ahora supongamos un rectangulo R pintado en la pantalla y que vamos a arrastrar con el raton. :huh:
Lo que yo hago para conseguir este efecto segun vamos arrastrandolo, es invalidar el rectangulo ocupado por R en su ultima posicion y pintar R en la nueva posicion. :blink:
O sea que si X,Y es la posicion de R en la pantalla, W es el ancho, H el alto de R y X2,Y2 el punto donde mover R, la cosa queda:
InvalidateRect( CRect( CPoint(X,Y), CSize(W,H) ), TRUE )
FrameRect( CRect( CPoint(X2,Y2), CSize(W,H) ) )
Bueno, pues con esto consigo un muy feo efecto de parpadeo. :angry:
¿Alguna idea para evitar este parpadeo?
Muchas gracias :D
-
Intenta q solo repinte la pantalla al largar el click del mouse y no en el OnMouseMove. Ya se q la aplicacion sera "mas trucha" pero es lo q hay.
Salu2!!!
-
Otra alternativa para eliminar el parpadeo es utilizar el doublebuffering en tus aplicaciones.
aqui te adjunto un archivo zipeado que utiliza este metodo de pintado en memoria.
el programa es parte de un ariculo que pubicaré en Programacion.uni.cc (http://www.programacion.uni.cc) en los proximos dias.