Sdílet prostřednictvím


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é