Clase wxDragImage
Esta clase se utiliza cuando se desea arrastrar un objeto por la pantalla, y un simple cursor no es suficiente.
Jerarquía:

En Windows, se utiliza la API Win32 para conseguir un arrastre suave. En otras plataformas, se utiliza wxGenericDragImage. Es posible que en las aplicaciones también se prefiera utilizar wxGenericDragImage en Windows.
Para utilizar esta clase, cuando desee comenzar a arrastrar una imagen, hay que crear un objeto wxDragImage y almacenarlo en algún lugar al que pueda acceder a medida que progresa el arrastre. Llamar a BeginDrag() para comenzar, y a EndDrag() para detener el arrastre. Para mover la imagen, inicialmente llamar a Show() y luego a Move(). Si se desea actualizar el contenido de la pantalla durante el arrastre (por ejemplo, resaltar un elemento como en el ejemplo dragimag), primero llamar a Hide(), actualizar la pantalla, llamar a Move(), y luego llamar a Show().
Se puede arrastrar dentro de una ventana, o utilizar el arrastre a pantalla completa, ya sea a través de toda la pantalla, o sólo restringido a un área de la pantalla para ahorrar recursos. Si se desea que el usuario arrastre entre dos ventanas, entonces se tendrá que utilizar el arrastre a pantalla completa.
Si se desea dibujar la imagen uno mismo, utilizar wxGenericDragImage y anular DoDrawImage() y GetImageRect().
Funciones miembro
wxDragImage()
wxDragImage::wxDragImage()
Constructor por defecto.
wxDragImage()
Construye una imagen de arrastre a partir de un mapa de bits y un cursor opcional.
Parámetros
- image
- Mapa de bits que se utilizará como imagen de arrastre. El bitmap puede tener una máscara.
- cursor
- Cursor opcional para combinar con la imagen.
wxDragImage()
Construye una imagen de arrastre a partir de un icono y un cursor opcional.
Parámetros
- image
- Icono que se utilizará como imagen de arrastre.
- cursor
- Cursor opcional para combinar con la imagen.
wxDragImage()
Construye una imagen de arrastre a partir de una cadena de texto y un cursor opcional.
Parámetros
- text
- Texto utilizado para construir una imagen de arrastre.
- cursor
- Cursor opcional para combinar con la imagen.
wxDragImage()
wxDragImage::wxDragImage( const wxTreeCtrl & treeCtrl, wxTreeItemId & id )
Construye una imagen de arrastre a partir del texto en el elemento de control de árbol dado, y el cursor opcional.
Parámetros
- treeCtrl
- Control de árbol para construir una imagen de arrastre de árbol.
- id
- Id del elemento de control del árbol.
wxDragImage()
wxDragImage::wxDragImage( const wxListCtrl & listCtrl, long id )
Construye una imagen de arrastre a partir del texto en el elemento de control de lista dado, y el cursor opcional.
Parámetros
- listCtrl
- Control de lista para construir una imagen de arrastre de lista.
- id
- Id del elemento de control de lista.
BeginDrag()
bool wxDragImage::BeginDrag( const wxPoint & hotspot, wxWindow * window, bool fullScreen = false, wxRect * rect = NULL )
Empieza a arrastrar la imagen, en una ventana o a pantalla completa.
A continuación, se debe llamar a Show() y Move() para mostrar la imagen en la pantalla. Llamar a EndDrag() cuando el arrastre haya terminado.
Hay que tener en cuenta que esta llamada llama automáticamente a CaptureMouse().
Parámetros
- hotspot
- La localización de la posición de arrastre relativa a la esquina superior izquierda de la imagen.
- window
- La ventana que captura el ratón, y dentro de la cual el arrastre está limitado a menos que fullScreen sea true.
- fullScreen
- Si es true, especifica que el arrastre será visible en toda la pantalla, o en la parte de la pantalla especificada por rect. Hay que tener en cuenta que el ratón seguirá siendo capturado en la ventana.
- rect
- Si no es NULL, especifica el rectángulo (en coordenadas de pantalla) que delimita la operación de arrastre. Especificar esto puede hacer que la operación sea más eficiente reduciendo el área a considerar, y también puede suponer una diferencia visual ya que el arrastre se recorta a esta área.
BeginDrag()
bool wxDragImage::BeginDrag( const wxPoint & hotspot, wxWindow * window, wxWindow * boundingWindow )
Empieza a arrastrar la imagen, utilizando la primera ventana para capturar el ratón y la segunda para especificar el área de delimitación.
Esta forma es equivalente a utilizar la primera, pero más conveniente que calcular el rectángulo delimitador explícitamente.
Se necesitará entonces llamar a Show() y Move() para mostrar la imagen en la pantalla. Llamar a EndDrag() cuando el arrastre haya terminado.
Hay que tener en cuenta que esta llamada llama automáticamente a CaptureMouse().
Parámetros
- hotspot
- La localización de la posición de arrastre relativa a la esquina superior izquierda de la imagen.
- window
- La ventana que captura el ratón, y dentro de la cual se limita el arrastre.
- boundingWindow
- Especifica el área dentro de la cual se produce el arrastre.
DoDrawImage()
Dibuja la imagen en el contexto del dispositivo con la esquina superior izquierda en la posición dada.
Esta función sólo está disponible con wxGenericDragImage, para permitir a las aplicaciones dibujar su propia imagen en lugar de utilizar un mapa de bits real. Si se anula esta función, también se debe anular GetImageRect().
EndDrag()
bool wxDragImage::EndDrag()
Llamarla cuando el arrastre ha terminado.
Nota: Esta función libera automáticamente la captura del ratón.
GetImageRect()
virtual wxRect wxDragImage::GetImageRect(const wxPoint & pos) const
Devuelve el rectángulo que encierra la imagen, suponiendo que la imagen se dibuja con su esquina superior izquierda en el punto dado.
Esta función sólo está disponible en wxGenericDragImage, y puede sobrescribirse (junto con DoDrawImage()) para proporcionar una capacidad de dibujo virtual.
Hide()
bool wxDragImage::Hide()
Move()
bool wxDragImage::Move(const wxPoint & pt)
Llamar a esta función para mover la imagen a una nueva posición.
La imagen sólo se mostrará si previamente se ha llamado a Show() (por ejemplo, al inicio del arrastre).
Parámetros
- pt
- La posición en coordenadas del cliente (relativas a la ventana especificada en BeginDrag()).
Se puede mover la imagen cuando está oculta o mostrada, pero en general el arrastre será más suave si se mueve la imagen cuando está mostrada.
Show()
bool wxDragImage::Show()
Muestra la imagen.
Llamarla al menos una vez al arrastrar.
UpdateBackingFromWindow()
virtual bool wxDragImage::UpdateBackingFromWindow( wxDC & windowDC, wxMemoryDC & destDC, const wxRect & sourceRect, const wxRect & destRect ) const
Anular esta opción si se desea dibujar uno mismo el contenido de la ventana en el mapa de bits de respaldo.
Esto puede ser conveniente si se desea evitar el parpadeo al no tener que redibujar la propia ventana actualizada justo antes de arrastrar, lo que puede causar un parpadeo justo cuando se inicia el arrastre. En su lugar, pintar el mapa de bits de la imagen de arrastre para mostrar el gráfico apropiado menos los objetos a arrastrar, y dejar que la propia ventana sea actualizada por la imagen de arrastre. Esto puede proporcionar un comportamiento de arrastre extrañamente suave y sin parpadeos.
La implementación predeterminada copia el contenido de la ventana en el mapa de bits de respaldo. Una nueva implementación normalmente copiará la información de otra fuente, como un bitmap de respaldo propio si se tiene uno, o directamente de estructuras de datos internas.
Esta función sólo está disponible en wxGenericDragImage.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject.