Procedura: Ridimensionare un'area di disegno usando un pollice
In questo esempio viene illustrato come utilizzare un controllo Thumb per ridimensionare un controllo Canvas.
Esempio
Il controllo Thumb fornisce funzionalità di trascinamento che possono essere usate per spostare o ridimensionare i controlli monitorando gli eventi DragStarted, DragDelta e DragCompleted dell'Thumb.
L'utente avvia un'operazione di trascinamento premendo il pulsante sinistro del mouse quando il puntatore del mouse è fermo sopra il controllo Thumb. L'operazione di trascinamento continua finché il pulsante sinistro del mouse rimane premuto. Durante l'operazione di trascinamento, il DragDelta può verificarsi più volte. Ogni volta che si verifica, la classe DragDeltaEventArgs fornisce la modifica nella posizione corrispondente alla modifica nella posizione del mouse. Quando l'utente rilascia il pulsante sinistro del mouse, l'operazione di trascinamento viene completata. L'operazione di trascinamento fornisce solo nuove coordinate; non riposiziona automaticamente il Thumb.
Nell'esempio seguente viene illustrato un controllo Thumb che rappresenta l'elemento figlio di un controllo Canvas. Il gestore eventi per il relativo evento DragDelta fornisce la logica per spostare il Thumb e ridimensionare il Canvas. I gestori degli eventi DragStarted e DragCompleted modificano il colore dell'Thumb durante un'operazione di trascinamento. Nell'esempio seguente viene definito il Thumb.
<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue"
Width="20" Height="20" DragDelta="onDragDelta"
DragStarted="onDragStarted" DragCompleted="onDragCompleted"
/>
Nell'esempio seguente viene illustrato il gestore eventi DragDelta che sposta il Thumb e ridimensiona il Canvas in risposta a uno spostamento del mouse.
void onDragDelta(object sender, DragDeltaEventArgs e)
{
//Move the Thumb to the mouse position during the drag operation
double yadjust = myCanvasStretch.Height + e.VerticalChange;
double xadjust = myCanvasStretch.Width + e.HorizontalChange;
if ((xadjust >= 0) && (yadjust >= 0))
{
myCanvasStretch.Width = xadjust;
myCanvasStretch.Height = yadjust;
Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) +
e.HorizontalChange);
Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) +
e.VerticalChange);
changes.Text = "Size: " +
myCanvasStretch.Width.ToString() +
", " +
myCanvasStretch.Height.ToString();
}
}
Nell'esempio seguente viene illustrato il gestore eventi DragStarted.
void onDragStarted(object sender, DragStartedEventArgs e)
{
myThumb.Background = Brushes.Orange;
}
Private Sub onDragStarted(ByVal sender As Object, ByVal e As DragStartedEventArgs)
myThumb.Background = Brushes.Orange
End Sub
Nell'esempio seguente viene illustrato il gestore eventi DragCompleted.
void onDragCompleted(object sender, DragCompletedEventArgs e)
{
myThumb.Background = Brushes.Blue;
}
Private Sub onDragCompleted(ByVal sender As Object, _
ByVal e As DragCompletedEventArgs)
myThumb.Background = Brushes.Blue
End Sub
Per vedere l'esempio completo, consultare il campione di funzionalità di trascinamento con pollice
Vedere anche
.NET Desktop feedback