달나라 노트

C# : FillEllipse (채워진 타원 그리기) 본문

C#/C#

C# : FillEllipse (채워진 타원 그리기)

CosmosProject 2022. 5. 18. 21:04
728x90
반응형

 

 

 

FillEllipse method는 채워진 타원을 그려줍니다.

 

사용법은 아래와 같습니다.

 

Syntax

FillEllipse(Brush, x, y, width, height)

 

- Brush

브러쉬 객체를 받습니다.

 

 

- x, y

타원이 위치할 x, y 좌표입니다.

주의할 점은 타원 중심의 x, y 좌표가 아니라 타원을 사각형으로 감쌌을 때 사각형의 왼쪽 위 꼭지점이 위치하는 곳의 좌표라는 것입니다.

 

 

- width, height

타원의 가로길이와 세로길이입니다.

 

 

 

 

 

 

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

class CardCatch
{
    public static void Main()
    {
        Form fm = new Form();
        fm.ClientSize = new Size(300, 300);

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.FillEllipse(new SolidBrush(Color.Gray), 0, 0, 200, 150);
        }
        fm.Paint += new PaintEventHandler(fm_paint);

        Application.Run(fm);
    }
}

 

위 예시는 Form에 타원 하나를 그리는 예시입니다.

 

 

그 결과는 위와 같습니다.

 

- g.FillEllipse(new SolidBrush(Color.Gray), 0, 0, 200, 150);

타원을 그리는 부분입니다.

각 인자들의 의미를 살펴봅시다.

 

 

- new SolidBrush(Color.Gray),

브러쉬는 SolidBrush를 사용했습니다. SolidBrush는 인자로 Color 객체를 받는데 저는 Gray라고 했기 때문에 회색 타원이 그려졌습니다.

 

 

- 0, 0

이건 타원의 x, y 좌표입니다.

위 결과를 보면 타원이 Window의 왼쪽 위에 붙어있는 것이 보이시나요?

타원을 사각형으로 감쌌을 때 왼쪽 위 꼭지점이 위치하는 곳이 바로 0, 0입니다.

 

위 이미지를 보면 타원을 감싸는 가상의 사각형을 빨간색으로 표시했습니다.

빨간색 사각형의 왼쪽 위 꼭지점은 Window의 가장 왼쪽 위에있죠.

Window의 가장 왼쪽 위의 좌표는 x=0, y=0입니다.

 

즉, 타원이 위치하는 좌표는 x=0, y=0이 되는 것입니다.

 

 

- 200, 150

여기서 200은 타원의 가로길이고 150은 타원의 세로길이입니다.

 

 

 

 

 

 

 

 

 

 

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

class CardCatch
{
    public static void Main()
    {
        Form fm = new Form();
        fm.ClientSize = new Size(300, 300);

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.FillEllipse(new SolidBrush(Color.Gray), 20, 50, 200, 150);
        }
        fm.Paint += new PaintEventHandler(fm_paint);

        Application.Run(fm);
    }
}

 

 

- g.FillEllipse(new SolidBrush(Color.Gray), 20, 50, 200, 150);

타원의 x, y좌표를 x=20, y=50으로 했습니다.

 

 

타원을 감싸는 사각형을 그렸을 때 사각형의 왼쪽 위 꼭지점의 좌표가 x=20, y=50이 되도록 타원을 위치시킨다는 의미입니다.

 

 

 

 

 

 

 

 

 

 

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

class CardCatch
{
    public static void Main()
    {
        Form fm = new Form();
        fm.Width = 500;
        fm.Height = 500;

        PictureBox pb = new PictureBox();
        pb.Parent = fm;
        pb.Width = 300;
        pb.Height = 300;
        pb.Location = new Point(0, 0);

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.FillEllipse(new SolidBrush(Color.Gray), 0, 0, 200, 200);
        }
        pb.Paint += new PaintEventHandler(fm_paint);


        Application.Run(fm);
    }
}

 

 

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.FillEllipse(new SolidBrush(Color.Gray), 0, 0, 200, 200);
        }
        pb.Paint += new PaintEventHandler(fm_paint);

 

위 예시처럼 Graphic event를 PictureBox에도 등록할 수 있습니다.

 

 

 

 

 

 

 

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

class CardCatch
{
    public static void Main()
    {
        Form fm = new Form();
        fm.Width = 500;
        fm.Height = 500;

        PictureBox pb = new PictureBox();
        pb.Parent = fm;
        pb.Width = 300;
        pb.Height = 300;
        pb.Location = new Point(50, 100);

        void fm_paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            g.FillEllipse(new SolidBrush(Color.Gray), 0, 0, 200, 200);
        }
        pb.Paint += new PaintEventHandler(fm_paint);


        Application.Run(fm);
    }
}

 

 

주의할 점은 FillEllipse가 PictureBox에 속할 경우 타원의 x, y 좌표는 Window 전체를 기준으로 한 x, y좌표가 아니라 PictureBox의 좌측 상단을 (0, 0)으로 간주한 좌표를 따르게 된다는 것입니다.

 

 

 

 

 

 

728x90
반응형
Comments