Control.RectangleToScreen Method
Computes the size and location of the specified client rectangle in screen coordinates.
[Visual Basic] Public Function RectangleToScreen( _ ByVal r As Rectangle _ ) As Rectangle [C#] public Rectangle RectangleToScreen( Rectangle r ); [C++] public: Rectangle RectangleToScreen( Rectangle r ); [JScript] public function RectangleToScreen( r : Rectangle ) : Rectangle;
Parameters
- r
- The screen coordinate Rectangle object to convert.
Return Value
A Rectangle that represents the converted Rectangle, p, in screen coordinates.
Example
[Visual Basic, C#] The following code example demonstrates how to use the BackColor, RectangleToScreen, PointToScreen, DrawReversibleFrame, and IntersectsWith members. To run the example, paste the following code in a form called Form1 containing several controls. This example assumes the MouseDown, MouseMove, and MouseUp events are connected to the event handling methods defined in the example.
[Visual Basic] ' 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] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
See Also
Control Class | Control Members | System.Windows.Forms Namespace | Rectangle | RectangleToClient