Sdílet prostřednictvím


Shape.PointToClient-Methode

Aktualisiert: November 2007

Rechnet die Position des angegebenen Bildschirmpunkts in Clientkoordinaten um.

Namespace:  Microsoft.VisualBasic.PowerPacks
Assembly:  Microsoft.VisualBasic.PowerPacks.Vs (in Microsoft.VisualBasic.PowerPacks.Vs.dll)

Syntax

'Declaration
Public Function PointToClient ( _
    p As Point _
) As Point
'Usage
Dim instance As Shape
Dim p As Point
Dim returnValue As Point

returnValue = instance.PointToClient(p)
public Point PointToClient(
    Point p
)
public:
Point PointToClient(
    Point p
)
public function PointToClient(
    p : Point
) : Point

Parameter

Rückgabewert

Typ: System.Drawing.Point

Point , der den konvertierten Pointp in Clientkoordinaten darstellt.

Hinweise

Mit der PointToClient-Methode können Sie einen Wert, z. B. DragEventArgs, der Bildschirmkoordinaten zurückgibt, in die Clientkoordinaten eines Formulars konvertieren.

Beispiele

Das folgende Beispiel veranschaulicht, wie Sie mit der PointToClient-Methode ein RectangleShape-Steuerelement verschieben, wenn eine Bilddatei hierauf abgelegt wird. Die PointToClient-Methode verschiebt das RectangleShape-Steuerelement relativ zum Clientformular. Wenn sich die Ablageposition beispielsweise 10 Pixel nach unten und 10 Pixel nach rechts von der oberen linken Ecke des Rechtecks befindet, wird das Rechteck an eine Position verschoben, die sich 10 Pixel nach unten und 10 Pixel nach rechts von der oberen linken Ecke des Formulars befindet.

Für dieses Beispiel müssen Sie über ein RectangleShape-Steuerelement mit dem Namen RectangleShape1 auf einem Formular verfügen, und die AllowDrop-Eigenschaft des Formulars muss auf true festgelegt sein.

Private Sub Form1_DragDrop(ByVal sender As Object, _
 ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
    ' Determine whether the drop is within the rectangle.
    If RectangleShape1.HitTest(e.X, e.Y) = True Then
        ' Handle file data.
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            ' Assign the file names to a string array, in 
            ' case the user has selected multiple files.
            Dim files As String() = _
              CType(e.Data.GetData(DataFormats.FileDrop), String())
            Try
                ' Assign the first image to the BackGroundImage
                ' property.
                RectangleShape1.BackgroundImage = _
                  Image.FromFile(files(0))
                ' Set the rectangle location relative to the form.
                RectangleShape1.Location = _
                  RectangleShape1.PointToClient(New Point(e.X, e.Y))
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                Return
            End Try
        End If
    End If
End Sub
Private Sub Form1_DragEnter(ByVal sender As Object, _
  ByVal e As DragEventArgs) Handles MyBase.DragEnter
    ' If the data is a file, display the copy cursor.
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.Copy
    Else
        e.Effect = DragDropEffects.None
    End If
End Sub
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
    // Determine whether the drop is within the rectangle.
    if (rectangleShape1.HitTest(e.X, e.Y)==true)
        // Handle file data.
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
            // Assign the file names to a string array, in 
            // case the user has selected multiple files.
        {
            string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop);
            try
            {
                // Assign the first image to the BackGroundImage
                // property.
                rectangleShape1.BackgroundImage = Image.FromFile(files[0]);
                // Set the rectangle location relative to the form.
                rectangleShape1.Location = 
                    rectangleShape1.PointToClient(new Point(e.X, e.Y));
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
    }
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
    // If the data is a file, display the copy cursor.
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

Berechtigungen

Siehe auch

Referenz

Shape-Klasse

Shape-Member

Microsoft.VisualBasic.PowerPacks-Namespace

Weitere Ressourcen

Gewusst wie: Zeichnen von Linien mit dem LineShape-Steuerelement (Visual Studio)

Gewusst wie: Zeichnen von Formen mit dem OvalShape-Steuerelement und dem RectangleShape-Steuerelement (Visual Studio)

Einführung in das Line-Steuerelement und das Shape-Steuerelement (Visual Studio)