Implementación de un Canvas para modificar Objetos en Delphi parte IV

Hay que tener amplios conocimientos de como funcionan los mensajes y como gestionan los diversos componentes el refresco de los gráficos mediante los métodos .refresh o .invalidate. Si os fijáis en la jerarquía de clases de los elementos que contienen eventos de mouse (OnDragDrop, OnDragOver, OnEndDock, OnEndDrag, OnMouseActivate, OnMouseDown, OnMouseEnter, OnMouseLeave, OnMouseMove, OnMouseUp, OnStartDock, OnStartDrag, etc.) como TShape, TPaintBox, TImage, TBevel, etc, heredan de la clase TGraphicControl. Os recomiendo pasar por la unit ExtCtrls y observar el código de los diferentes componentes. De ahí podréis sacar bastantes ideas de como se utilizan los eventos y los mensajes.
Si cogéis la penúltima versión de Thundaxboxmanager v1.0.0 build 9.exe, podréis comprobar el tema que os comento sobre la velocidad del mouse:

Aquí los trucos que podemos utilizar son los mismos que se trabajan con la creación de vídeo juegos. Lo que tenemos que hacer es ir capturando éstos mensajes lo más rápido posible y procesarlos (hay muchas técnicas para ésto). Podemos sacar ideas observando los métodos invalidate o refresh de TControl en la unit Controls. Para que quede un movimiento suave, podemos ir redibujando las zonas afectadas por el movimiento, e incluso hacer que el objeto siga el mouse y no al revés.
Si os descargáis la versión thundaxBoxManager v1.0.0 build 10.exe veréis que ahora la caja no se suelta del mouse por más rápido que lo movamos.

- Enlaces de interés:
Capture mouse event inside TImage.
Catching all mouse events.
Hooking mouse movement.
WM_PRINT Message.
Screen Grab Utility.
Hoot Keys delphi.
How to hook the mouse.
Understanding Drag Drop operations.
Comments
Post a Comment