Postupy: Změna velikosti plátna pomocí palce
Tento příklad ukazuje, jak pomocí ovládacího prvku Thumb změnit velikost ovládacího prvku Canvas.
Příklad
Ovládací prvek Thumb poskytuje funkce přetažení, které lze použít k přesunutí nebo změně velikosti ovládacích prvků monitorováním DragStarted, DragDelta a DragCompleted událostí Thumb.
Uživatel zahájí operaci přetažení stisknutím levého tlačítka myši, když je ukazatel myši pozastaven na ovládacím prvku Thumb. Operace přetažení pokračuje, dokud levé tlačítko myši zůstane stisknuté. Během operace přetažení může dojít k DragDelta vícekrát. Pokaždé, když dojde k tomu, DragDeltaEventArgs třída poskytuje změnu v poloze, která odpovídá změně umístění myši. Když uživatel uvolní levé tlačítko myši, operace přetažení se dokončí. Při přetažení se změní pouze souřadnice; automaticky se nepřemístí Thumb.
Následující příklad ukazuje ovládací prvek Thumb, který je podřízeným prvkem ovládacího prvku Canvas. Obslužná rutina události pro událost DragDelta poskytuje logiku pro přesunutí Thumb a změnu velikosti Canvas. Obslužné rutiny událostí pro událost DragStarted a DragCompleted změní během operace přetažení barvu Thumb. Následující příklad definuje Thumb.
<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue"
Width="20" Height="20" DragDelta="onDragDelta"
DragStarted="onDragStarted" DragCompleted="onDragCompleted"
/>
Následující příklad ukazuje obslužnou rutinu události DragDelta, která přesune Thumb a změní velikost Canvas v reakci na pohyb myši.
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();
}
}
Následující příklad ukazuje obslužnou rutinu události 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
Následující příklad ukazuje obslužnou rutinu události 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
Kompletní ukázku funkce přetažení palcem najdete v ukázce .
Viz také
.NET Desktop feedback