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

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

DDD
DDD원래의
2024-12-31 09:17:14627검색

How to Draw Rectangles at Mouse Coordinates Using the C# Paint Event?

Paint 이벤트를 사용하여 마우스 좌표에 도형 그리기

GUI 애플리케이션을 개발할 때 화면에 도형을 그려야 하는 경우가 종종 있습니다. 이를 수행하는 한 가지 방법은 컨트롤 표면의 일부를 다시 그려야 할 때 발생하는 Paint 이벤트를 사용하는 것입니다.

직사각형 그리기

제공된 예제 코드의 목표는 마우스 포인터의 좌표에 직사각형을 그리는 것입니다. 이를 달성하기 위해 DrawRect() 메서드가 사용됩니다. 이 메소드는 마우스 좌표와 PaintEventArgs 객체를 인수로 사용합니다.

코드 수정

Paint 이벤트에 마우스 좌표를 포함하려면 코드를 다음과 같이 수정해야 합니다. 다음:

  1. 의 인수를 추가합니다. MouseCoordinates를 PaintEvent에 적용:

    private void Form1_Paint(object sender, PaintEventArgs e, Point mouseCoordinates)
    {
    
    }
  2. 그리기 함수 호출:
    Paint 이벤트 핸들러에서 DrawRect() 메서드를 다음과 같이 호출합니다. 제공된 마우스 좌표 및 PaintEventArgs 개체:

    this.DrawRect(e, mouseCoordinates.X, mouseCoordinates.Y);

전체 코드

수정 후 전체 코드:

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        int x = e.X;
        int y = e.Y;
        Point mouseCoord = new Point(x, y);
    }

    private void Form1_Paint(object sender, PaintEventArgs e, Point mouseCoord)
    {
        this.DrawRect(e, mouseCoord.X, mouseCoord.Y);
    }

    public void DrawRect(PaintEventArgs e, int x, int y)
    {
        Graphics gr = e.Graphics;
        Pen pen = new Pen(Color.Azure, 4);
        Rectangle rect = new Rectangle(0, 0, x, y);
        gr.DrawRectangle(pen, rect);
    }
}

추가 고려사항

그림을 그릴 때 컨트롤 표면에서는 항상 Paint 이벤트를 사용하거나 OnPaint 메서드를 재정의하세요. 컨트롤을 다시 칠하면 유효하지 않게 되므로 Graphics 개체를 저장하지 마십시오. 대신 PaintEventArgs 개체에서 제공하는 Graphics 개체를 사용하세요.

C#에서 모양을 그리는 데 필요한 추가 리소스는 다음과 같습니다.

  • [C#에서 직사각형 그리기](https://www. tutorialsteacher.com/csharp/csharp-draw-ectangle)
  • [페인트 이벤트 튜토리얼 C#](https://www.c-sharpcorner.com/uploadfile/deba/paint-event-tutorial-in-csharp)

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

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