Control.PointToScreen メソッド

指定したクライアント ポイントを計算して画面座標を算出します。

Public Function PointToScreen( _
   ByVal p As Point _) As Point
[C#]
public Point PointToScreen(Pointp);
[C++]
public: Point PointToScreen(Pointp);
[JScript]
public function PointToScreen(
   p : Point) : Point;

パラメータ

  • p
    クライアント座標で示された変換対象の Point

戻り値

変換された Pointp を画面座標で表す Point

使用例

[Visual Basic, C#] BackColor メンバ、 RectangleToScreen メンバ、 PointToScreen メンバ、 DrawReversibleFrame メンバ、および IntersectsWith メンバの使用方法を示すコード例を次に示します。この例を実行するには、次のコードを、Form1 という名前のフォームに貼り付けます。このフォームには、複数のコントロールが配置されています。この例は、MouseDown イベント、MouseMove イベントおよび MouseUp イベントが、この例で定義されているイベント処理メソッドに関連付けられていることを前提としています。

 
' The following three methods will draw a rectangle and allow 
' the user to use the mouse to resize the rectangle.  If the 
' rectangle intersects a control's client rectangle, the 
' control's color will change.

Dim isDrag As Boolean = False
Dim theRectangle As New rectangle(New Point(0, 0), New Size(0, 0))
Dim startPoint As Point

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
    System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown

    ' Set the isDrag variable to true and get the starting point 
    ' by using the PointToScreen method to convert form coordinates to
    ' screen coordinates.
    If (e.Button = MouseButtons.Left) Then
        isDrag = True
    End If

    Dim control As Control = CType(sender, Control)

    ' Calculate the startPoint by using the PointToScreen 
    ' method.
    startPoint = control.PointToScreen(New Point(e.X, e.Y))
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove

    ' If the mouse is being dragged, undraw and redraw the rectangle
    ' as the mouse moves.
    If (isDrag) Then

        ' Hide the previous rectangle by calling the DrawReversibleFrame 
        ' method with the same parameters.
        ControlPaint.DrawReversibleFrame(theRectangle, Me.BackColor, _
            FrameStyle.Dashed)

        ' Calculate the endpoint and dimensions for the new rectangle, 
        ' again using the PointToScreen method.
        Dim endPoint As Point = Me.PointToScreen(New Point(e.X, e.Y))
        Dim width As Integer = endPoint.X - startPoint.X
        Dim height As Integer = endPoint.Y - startPoint.Y
        theRectangle = New Rectangle(startPoint.X, startPoint.Y, _
            width, height)

        ' Draw the new rectangle by calling DrawReversibleFrame again.  
        ControlPaint.DrawReversibleFrame(theRectangle, Me.BackColor, _
             FrameStyle.Dashed)
    End If
End Sub

Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp

    ' If the MouseUp event occurs, the user is not dragging.
    isDrag = False

    ' Draw the rectangle to be evaluated. Set a dashed frame style 
    ' using the FrameStyle enumeration.
    ControlPaint.DrawReversibleFrame(theRectangle, Me.BackColor, _
        FrameStyle.Dashed)

    ' Find out which controls intersect the rectangle and change their color.
    ' The method uses the RectangleToScreen method to convert the 
    ' Control's client coordinates to screen coordinates.
    Dim i As Integer
    Dim controlRectangle As Rectangle
    For i = 0 To Controls.Count - 1
        controlRectangle = Controls(i).RectangleToScreen _
            (Controls(i).ClientRectangle)
        If controlRectangle.IntersectsWith(theRectangle) Then
            Controls(i).BackColor = Color.BurlyWood
        End If
    Next

    ' Reset the rectangle.
    theRectangle = New Rectangle(0, 0, 0, 0)
End Sub

[C#] 
// The following three methods will draw a rectangle and allow 
// the user to use the mouse to resize the rectangle.  If the 
// rectangle intersects a control's client rectangle, the 
// control's color will change.

bool isDrag = false;
Rectangle theRectangle = new Rectangle
    (new Point(0, 0), new Size(0, 0));
Point startPoint;

private void Form1_MouseDown(object sender, 
    System.Windows.Forms.MouseEventArgs e)
{

    // Set the isDrag variable to true and get the starting point 
    // by using the PointToScreen method to convert form 
    // coordinates to screen coordinates.
    if (e.Button==MouseButtons.Left)
    {
        isDrag = true;
    }

    Control control = (Control) sender;

    // Calculate the startPoint by using the PointToScreen 
    // method.
    startPoint = control.PointToScreen(new Point(e.X, e.Y));
}

private void Form1_MouseMove(object sender, 
    System.Windows.Forms.MouseEventArgs e)
{

    // If the mouse is being dragged, 
    // undraw and redraw the rectangle as the mouse moves.
    if (isDrag)

        // Hide the previous rectangle by calling the 
        // DrawReversibleFrame method with the same parameters.
    {
        ControlPaint.DrawReversibleFrame(theRectangle, 
            this.BackColor, FrameStyle.Dashed);

        // Calculate the endpoint and dimensions for the new 
        // rectangle, again using the PointToScreen method.
        Point endPoint = this.PointToScreen(new Point(e.X, e.Y));
        int width = endPoint.X-startPoint.X;
        int height = endPoint.Y-startPoint.Y;
        theRectangle = new Rectangle(startPoint.X, 
            startPoint.Y, width, height);

        // Draw the new rectangle by calling DrawReversibleFrame
        // again.  
        ControlPaint.DrawReversibleFrame(theRectangle, 
            this.BackColor, FrameStyle.Dashed);
    }
}

private void Form1_MouseUp(object sender, 
    System.Windows.Forms.MouseEventArgs e)
{

    // If the MouseUp event occurs, the user is not dragging.
    isDrag = false;

    // Draw the rectangle to be evaluated. Set a dashed frame style 
    // using the FrameStyle enumeration.
    ControlPaint.DrawReversibleFrame(theRectangle, 
        this.BackColor, FrameStyle.Dashed);

    // Find out which controls intersect the rectangle and 
    // change their color. The method uses the RectangleToScreen  
    // method to convert the Control's client coordinates 
    // to screen coordinates.
    Rectangle controlRectangle;
    for(int i = 0; i < Controls.Count; i++)
    {
        controlRectangle = Controls[i].RectangleToScreen
            (Controls[i].ClientRectangle);
        if (controlRectangle.IntersectsWith(theRectangle))
        {
            Controls[i].BackColor = Color.BurlyWood;
        }
    }

    // Reset the rectangle.
    theRectangle = new Rectangle(0, 0, 0, 0);
}

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

Control クラス | Control メンバ | System.Windows.Forms 名前空間 | Point | PointToClient