다음을 통해 공유


Control.PointToClient 메서드

특정 화면 지점의 위치를 클라이언트 좌표로 계산합니다.

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

구문

‘선언
Public Function PointToClient ( _
    p As Point _
) As Point
‘사용 방법
Dim instance As Control
Dim p As Point
Dim returnValue As Point

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

매개 변수

  • p
    변환할 화면 좌표 Point입니다.

반환 값

변환된 Point인 p를 클라이언트 좌표로 나타내는 Point입니다.

예제

다음 코드 예제에서는 사용자가 폼에 이미지나 이미지 파일을 끌어 놓을 수 있고, 해당 이미지가 끌어 놓은 지점에 표시되도록 합니다. OnPaint 메서드는 폼을 그릴 때마다 이미지를 다시 그리기 위해 재정의됩니다. 그렇지 않으면 다음에 다시 그릴 때까지 이미지가 그대로 지속됩니다. DragEnter 이벤트 처리 메서드는 폼으로 끌어 온 데이터 형식을 확인하여 적절한 피드백을 제공합니다. 데이터에서 Image를 만들 수 있을 경우 DragDrop 이벤트 처리 메서드는 폼에 이미지를 표시합니다. DragEventArgs.XDragEventArgs.Y 값이 화면 좌표이므로 예제에서는 PointToClient 메서드를 사용하여 이를 클라이언트 좌표로 변환합니다.

Private picture As Image
Private pictureLocation As Point

Public Sub New()
   ' Enable drag-and-drop operations.
   Me.AllowDrop = True
End Sub

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
   MyBase.OnPaint(e)

   ' If there is an image and it has a location, 
   ' paint it when the Form is repainted.
   If Not (Me.picture Is Nothing) And _
     Not (Me.pictureLocation.Equals(Point.Empty)) Then
      e.Graphics.DrawImage(Me.picture, Me.pictureLocation)
   End If
End Sub

Private Sub Form1_DragDrop(ByVal sender As Object, _
  ByVal e As DragEventArgs) Handles MyBase.DragDrop
   ' Handle FileDrop 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 'picture' variable.
         Me.picture = Image.FromFile(files(0))
         ' Set the picture location equal to the drop point.
         Me.pictureLocation = Me.PointToClient(New Point(e.X, e.Y))
      Catch ex As Exception
         MessageBox.Show(ex.Message)
         Return
      End Try
   End If

   ' Handle Bitmap data.
   If e.Data.GetDataPresent(DataFormats.Bitmap) Then
      Try
         ' Create an Image and assign it to the picture variable.
         Me.picture = CType(e.Data.GetData(DataFormats.Bitmap), Image)
         ' Set the picture location equal to the drop point.
         Me.pictureLocation = Me.PointToClient(New Point(e.X, e.Y))
      Catch ex As Exception
         MessageBox.Show(ex.Message)
         Return
      End Try
   End If

   ' Force the form to be redrawn with the image.
   Me.Invalidate()
End Sub

Private Sub Form1_DragEnter(ByVal sender As Object, _
  ByVal e As DragEventArgs) Handles MyBase.DragEnter
   ' If the data is a file or a bitmap, display the copy cursor.
   If e.Data.GetDataPresent(DataFormats.Bitmap) _
      Or e.Data.GetDataPresent(DataFormats.FileDrop) Then
      e.Effect = DragDropEffects.Copy
   Else
      e.Effect = DragDropEffects.None
   End If
End Sub
private Image picture;
private Point pictureLocation;

public Form1()
{
   // Enable drag-and-drop operations and 
   // add handlers for DragEnter and DragDrop.
   this.AllowDrop = true;
   this.DragDrop += new DragEventHandler(this.Form1_DragDrop);
   this.DragEnter += new DragEventHandler(this.Form1_DragEnter);
}

protected override void OnPaint(PaintEventArgs e)
{
   // If there is an image and it has a location, 
   // paint it when the Form is repainted.
   base.OnPaint(e);
   if(this.picture != null && this.pictureLocation != Point.Empty)
   {
      e.Graphics.DrawImage(this.picture, this.pictureLocation);
   }
}

private void Form1_DragDrop(object sender, DragEventArgs e)
{
   // Handle FileDrop 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 picture variable.
         this.picture = Image.FromFile(files[0]);
         // Set the picture location equal to the drop point.
         this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
      }
      catch(Exception ex)
      {
         MessageBox.Show(ex.Message);
         return;
      }
   }

   // Handle Bitmap data.
   if(e.Data.GetDataPresent(DataFormats.Bitmap) )
   {
      try
      {
         // Create an Image and assign it to the picture variable.
         this.picture = (Image)e.Data.GetData(DataFormats.Bitmap);
         // Set the picture location equal to the drop point.
         this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
      }
      catch(Exception ex)
      {
         MessageBox.Show(ex.Message);
         return;
      }
   }
   // Force the form to be redrawn with the image.
   this.Invalidate();
}

private void Form1_DragEnter(object sender, DragEventArgs e)
{
   // If the data is a file or a bitmap, display the copy cursor.
   if (e.Data.GetDataPresent(DataFormats.Bitmap) || 
      e.Data.GetDataPresent(DataFormats.FileDrop) ) 
   {
      e.Effect = DragDropEffects.Copy;
   }
   else
   {
      e.Effect = DragDropEffects.None;
   }
}
private:
   Image^ picture;
   Point pictureLocation;

public:
   Form1()
   {
      
      // Enable drag-and-drop operations and
      // add handlers for DragEnter and DragDrop.
      this->AllowDrop = true;
      this->DragDrop += gcnew DragEventHandler( this, &Form1::Form1_DragDrop );
      this->DragEnter += gcnew DragEventHandler( this, &Form1::Form1_DragEnter );
   }

protected:
   virtual void OnPaint( PaintEventArgs^ e ) override
   {
      
      // If there is an image and it has a location,
      // paint it when the Form is repainted.
      Form::OnPaint( e );
      if ( this->picture != nullptr && this->pictureLocation != Point::Empty )
      {
         e->Graphics->DrawImage( this->picture, this->pictureLocation );
      }
   }

private:
   void Form1_DragDrop( Object^ /*sender*/, DragEventArgs^ e )
   {
      
      // Handle FileDrop data.
      if ( e->Data->GetDataPresent( DataFormats::FileDrop ) )
      {
         // Assign the file names to a String* array, in
         // case the user has selected multiple files.
         array<String^>^files = (array<String^>^)e->Data->GetData( DataFormats::FileDrop );
         try
         {
            // Assign the first image to the picture variable.
            this->picture = Image::FromFile( files[ 0 ] );
            
            // Set the picture location equal to the drop point.
            this->pictureLocation = this->PointToClient( Point(e->X,e->Y) );
         }
         catch ( Exception^ ex ) 
         {
            MessageBox::Show( ex->Message );
            return;
         }

      }
      
      // Handle Bitmap data.
      if ( e->Data->GetDataPresent( DataFormats::Bitmap ) )
      {
         try
         {
            // Create an Image and assign it to the picture variable.
            this->picture = dynamic_cast<Image^>(e->Data->GetData( DataFormats::Bitmap ));

            // Set the picture location equal to the drop point.
            this->pictureLocation = this->PointToClient( Point(e->X,e->Y) );
         }
         catch ( Exception^ ex ) 
         {
            MessageBox::Show( ex->Message );
            return;
         }
      }
      
      // Force the form to be redrawn with the image.
      this->Invalidate();
   }

   void Form1_DragEnter( Object^ /*sender*/, DragEventArgs^ e )
   {
      // If the data is a file or a bitmap, display the copy cursor.
      if ( e->Data->GetDataPresent( DataFormats::Bitmap ) || e->Data->GetDataPresent( DataFormats::FileDrop ) )
      {
         e->Effect = DragDropEffects::Copy;
      }
      else
      {
         e->Effect = DragDropEffects::None;
      }
   }
private Image picture;
private Point pictureLocation;

public Form1()
{
    // Enable drag-and-drop operations and 
    // add handlers for DragEnter and DragDrop.
    this.set_AllowDrop(true);
    this.add_DragDrop(new DragEventHandler(this.Form1_DragDrop));
    this.add_DragEnter(new DragEventHandler(this.Form1_DragEnter));
} //Form1

protected void OnPaint(PaintEventArgs e)
{
    // If there is an image and it has a location, 
    // paint it when the Form is repainted.
    super.OnPaint(e);
    if (this.picture != null && !this.pictureLocation.Equals(Point.Empty)) {
        e.get_Graphics().DrawImage(this.picture, this.pictureLocation);
    }
} //OnPaint

private void Form1_DragDrop(Object sender, DragEventArgs e)
{
    // Handle FileDrop data.
    if (e.get_Data().GetDataPresent(DataFormats.FileDrop)) {
        // Assign the file names to a string array, in 
        // case the user has selected multiple files.
        String files[] = (String[])(e.get_Data().GetData(
            DataFormats.FileDrop));
        try {
            // Assign the first image to the picture variable.
            this.picture = Image.FromFile(files.toString());
            // Set the picture location equal to the drop point.
            this.pictureLocation = this.PointToClient(new Point(e.get_X(), 
                e.get_Y()));
        }
        catch (System.Exception ex) {
            MessageBox.Show(ex.get_Message());
            return;
        }
    }
    // Handle Bitmap data.
    if (e.get_Data().GetDataPresent(DataFormats.Bitmap)) {
        try {
            // Create an Image and assign it to the picture variable.
            this.picture = (Image)e.get_Data().GetData(DataFormats.Bitmap);
            // Set the picture location equal to the drop point.
            this.pictureLocation = this.PointToClient(new Point(e.get_X(), 
                e.get_Y()));
        }
        catch (System.Exception ex) {
            MessageBox.Show(ex.get_Message());
            return;
        }
    }
    // Force the form to be redrawn with the image.
    this.Invalidate();
} //Form1_DragDrop

private void Form1_DragEnter(Object sender, DragEventArgs e)
{
    // If the data is a file or a bitmap, display the copy cursor.
    if (e.get_Data().GetDataPresent(DataFormats.Bitmap) || e.get_Data().
        GetDataPresent(DataFormats.FileDrop)) {
        e.set_Effect(DragDropEffects.Copy);
    }
    else {
        e.set_Effect(DragDropEffects.None);
    }
} //Form1_DragEnter

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Control 클래스
Control 멤버
System.Windows.Forms 네임스페이스
Point
PointToScreen

기타 리소스

Windows Forms 좌표