일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- hive
- PANDAS
- numpy
- Github
- array
- gas
- list
- django
- Excel
- PostgreSQL
- math
- string
- Apache
- Google Excel
- Kotlin
- GIT
- Mac
- 파이썬
- Tkinter
- Python
- Google Spreadsheet
- dataframe
- Redshift
- PySpark
- google apps script
- Java
- SQL
- c#
- matplotlib
- Today
- Total
달나라 노트
C# : FillEllipse (채워진 타원 그리기) 본문
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)으로 간주한 좌표를 따르게 된다는 것입니다.
'C# > C#' 카테고리의 다른 글
C# : DrawString (글씨 그리기) (0) | 2022.05.18 |
---|---|
C# : FillPie (부채꼴 그리기) (0) | 2022.05.18 |
C# : break, continue, pass (0) | 2022.05.10 |
C# : System.IO.Directory.GetFiles (디렉토리 내의 파일 list 얻기) (0) | 2022.05.09 |
C# : C# 코드를 exe 파일로 만들기. exe 파일 생성. 실행 파일 생성 (2) | 2022.04.21 |