如何:使用拇指调整画布大小

此示例演示如何使用 Thumb 控件调整控件的大小 Canvas

示例:

Thumb控件提供拖动功能,通过监控DragStartedDragDeltaDragCompletedThumb事件,可以用于移动或调整控件大小。

当用户将鼠标指针停留在控件 Thumb 上时,通过按下鼠标左键开始拖动操作。 只要鼠标左键保持按下状态,拖动作将继续执行。 在拖动作期间,DragDelta 可能会多次发生。 每次发生时,类 DragDeltaEventArgs 都会提供与鼠标位置变化对应的位置更改。 当用户释放鼠标左键时,拖动作已完成。 拖动作仅提供新坐标,它不会自动重新定位Thumb

下面的示例演示一个 Thumb 控件,该控件是控件的 Canvas 子元素。 其 DragDelta 事件的处理程序提供了移动 Thumb 和调整 Canvas 大小的逻辑。 在拖动操作期间,DragStartedDragCompleted事件的事件处理程序会更改Thumb的颜色。 以下示例定义 Thumb

<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue" 
      Width="20" Height="20" DragDelta="onDragDelta" 
      DragStarted="onDragStarted" DragCompleted="onDragCompleted"
      />

以下示例显示 DragDelta 事件处理程序,该事件处理程序移动 Thumb 并调整其大小 Canvas 以响应鼠标移动。

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();
    }
}

下面的示例演示 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

下面的示例演示 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

有关完整示例,请参阅 Thumb Drag 功能示例

另请参阅