Dela via


Gör så här: Gör så här för att skapa ett objekt som följer muspekaren

Det här exemplet visar hur du ändrar dimensionerna för ett objekt när muspekaren flyttas på skärmen.

Exemplet innehåller en XAML-fil (Extensible Application Markup Language) som skapar användargränssnittet (UI) och en kod bakom-fil som skapar händelsehanteraren.

Exempel

Följande XAML skapar användargränssnittet, som består av en Ellipse inuti en StackPaneloch kopplar händelsehanteraren för händelsen MouseMove.

<Window x:Class="WCSamples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="mouseMoveWithPointer"
    Height="400"
    Width="500"
    >
  <Canvas MouseMove="MouseMoveHandler"
          Background="LemonChiffon">
    <Ellipse Name="ellipse" Fill="LightBlue" 
             Width="100" Height="100"/>
  </Canvas>
</Window>

Den bakomliggande koden skapar händelsehanteraren MouseMove. När muspekaren flyttas ökar och minskar Ellipse höjd och bredd.

// raised when the mouse pointer moves.
// Expands the dimensions of an Ellipse when the mouse moves.
private void MouseMoveHandler(object sender, MouseEventArgs e)
{
    // Get the x and y coordinates of the mouse pointer.
    System.Windows.Point position = e.GetPosition(this);
    double pX = position.X;
    double pY = position.Y;

    // Sets the Height/Width of the circle to the mouse coordinates.
    ellipse.Width = pX;
    ellipse.Height = pY;
}
' raised when the mouse pointer moves.
' Expands the dimensions of an Ellipse when the mouse moves.
Private Sub OnMouseMoveHandler(ByVal sender As Object, ByVal e As MouseEventArgs)

    'Get the x and y coordinates of the mouse pointer.
    Dim position As System.Windows.Point
    position = e.GetPosition(Me)
    Dim pX As Double
    pX = position.X
    Dim pY As Double
    pY = position.Y

    'Set the Height and Width of the Ellipse to the mouse coordinates.
    ellipse1.Height = pY
    ellipse1.Width = pX
End Sub

Se även

  • Översikt av indata