>백엔드 개발 >C++ >마우스 좌표와 Paint 이벤트를 사용하여 C# WinForms에서 도형을 그리는 방법은 무엇입니까?

마우스 좌표와 Paint 이벤트를 사용하여 C# WinForms에서 도형을 그리는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-02 13:17:38727검색

How to Draw Shapes in C# WinForms Using Mouse Coordinates and the Paint Event?

페인트 이벤트를 활용하여 마우스 좌표를 기반으로 도형 그리기

대화형 그래픽 애플리케이션을 만들 때 도형을 그릴 수 있어야 합니다. 사용자 입력을 기반으로 합니다. C# WinForms에서 Paint 이벤트는 애플리케이션 표면에 콘텐츠를 그리는 메커니즘을 제공합니다.

마우스 좌표 통합

마우스 좌표를 그리기 프로세스에 통합하려면 Form1_MouseMove 이벤트가 일반적으로 사용됩니다. 이 이벤트 내에서 X 및 Y 좌표는 MouseEventArgs 개체에서 추출할 수 있습니다. 이러한 좌표는 응용 프로그램 창 내에서 마우스 포인터의 현재 위치를 나타냅니다.

여러 인수로 DrawRect() 호출

코드 샘플에는 다음과 같은 DrawRect() 메서드가 있습니다. 마우스 좌표 및 PaintEventArgs 개체를 포함하여 여러 인수를 사용합니다. Form1_MouseMove 이벤트 내에서 이 메서드를 호출하려면 다음과 같이 코드를 수정하면 됩니다.

<br>private void Form1_MouseMove(object sender, MouseEventArgs e)<br>{</p>
<pre class="brush:php;toolbar:false">int x = e.X; 
int y = e.Y;
DrawRect(e.Graphics, x, y); // Use the Graphics object provided by PaintEventArgs

}

Paint 이벤트 및 DrawRect()

내부 Form1_Paint 이벤트 처리기인 경우 Graphics 개체는 PaintEventArgs 개체에 의해 제공됩니다. 이 Graphics 개체는 응용 프로그램 표면에 모양을 그리는 데 사용됩니다.

귀하의 경우 DrawRect() 메서드는 제공된 Graphics 개체를 사용하여 지정된 좌표에 직사각형을 그릴 수 있습니다.


public void DrawRect(그래픽 g, int x, int y)
{

Pen pen = new Pen(Color.Azure, 4);
Rectangle rect = new Rectangle(x, y, rex, rey);
g.DrawRectangle(pen, rect);

}

완전한 예

이러한 구성 요소를 함께 사용하면 애플리케이션의 전체 코드는 다음과 같습니다. 이:

<사전>
system 사용;
System.드로잉 사용;
System.Windows.Forms 사용;

공개 부분 클래스 Form1: Form
{

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    int x = e.X; 
    int y = e.Y;
    DrawRect(e.Graphics, x, y);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{

}

public void DrawRect(Graphics g, int x, int y)
{
    Pen pen = new Pen(Color.Azure, 4);
    Rectangle rect = new Rectangle(x, y, rex, rey);
    g.DrawRectangle(pen, rect);
}

}

Paint 이벤트와 DrawRect() 메서드를 활용하면 애플리케이션 표면에 모양을 효과적으로 그릴 수 있습니다. 사용자의 마우스 좌표를 기준으로 합니다.

위 내용은 마우스 좌표와 Paint 이벤트를 사용하여 C# WinForms에서 도형을 그리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.