: 응용 프로그램에서 사용자와의 인터페이스로 많이 사용되는 컨트롤
| 속성 및 메소드 | 내용 |
|---|---|
| ContextMenuStrip | ContextMenuStrip이 선택되어 있는지 여부를 나타내거나 설정 |
| Enabled | 컨트롤 사용 여부를 설정 |
| Items | MenuStrip에 등록된 모든 항목을 가져옴 |
| GetItemAt() | 지정한 위치에 있는 항목을 반환 |
| 속성 및 메소드 | 내용 |
|---|---|
| Checked | ToolStripMenuItem이 선택되어 있는지 여부를 나타내거나 설정 |
| Enabled | 컨트롤 사용 여부를 설정 |
| ShortCutKeys | ToolStripMenuItem과 연결된 바로 가기 키를 가져오거나 설정 |
| Visible | 항목이 표시되는지 여부를 나타내는 값을 가져오거나 설정 |
: 운영체제 기반에서 공통으로 제공되는 대화상자로, 파일 열기/저장 대화상자, 폰트 설정 대화상자, 색상 설정 대화상자 등이 있다.
주요 속성 및 메소드
| 속성 및 메소드 | 내용 |
|---|---|
| AddExtension | 확장명을 생략한 경우 대화상자가 파일 이름에 확장명을 자동으로 추가할지 여부를 설정 |
| CheckFileExists | 존재하지 않는 파일 이름을 지정할 때 대화상자에 경고가 표시되는지 여부를 설정 |
| CheckPathExists | 존재하지 않는 경로를 지정할 때 대화상자에 경고가 표시되는지 여부를 설정 |
| DefaultExt | 기본 확장명 설정 |
| FileName | 파일 대화상자에서 선택한 파일 이름을 포함하는 문자열 설정 |
| FileNames | 대화상자에서 선택한 모든 파일의 파일 이름을 가져옴 |
| Filter | 대화상자에서 "파일 형식"에 표시되는 문자열을 필터로 설정 |
| InitialDirectory | 대화상자가 표시하는 초기 디렉토리 설정 |
| Title | 대화상자이 제목 설정 |
| Reset() | 모든 속성을 기본값으로 다시 설정 |
| ShowDialog() | 모달 대화상자로 실행 |
주요 속성 및 메소드
| 속성 및 메소드 | 내용 |
|---|---|
| Color | 선택한 글꼴 색을 가져오거나 설정 |
| Font | 선택한 글꼴을 가져오거나 설정 |
| ShowEffects | 취소선, 밑줄 및 텍스트 옵션을 지정하는데 사용할 수 있는 기능 설정 |
| Reset() | 모든 속성을 기본값으로 다시 설정 |
| ShowDialog() | 모달 대화사장로 실행 |
| 속성 및 메소드 | 내용 |
|---|---|
| AnyColor | 대화상자에서 기본 색 집합에 있는 색 중 사용가능한 색이 모두 표시되는지 여부를 설정 |
| Color | 선택한 색을 가져오거나 설정 |
| CustomColor | 사용자 지정 색 집합을 가져오거나 설정 |
| Reset() | 모든 속성을 기본값으로 다시 설정 |
| ShowDialog() | 모달 대화사장로 실행 |
대화상자 예시 코드
// 버튼을 이용하여 파일 열기/저장/글꼴 및 색상 변경하기
namespace 공통대화상자
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (ofd.ShowDialog() == DialogResult.OK)
{
textBox1.Text = "Open " + ofd.FileName;
}
}
private void btnSave_Click(object sender, EventArgs e)
{
sfd.Filter = "모든 파일(*.*)|(*.*)";
if(sfd.ShowDialog() == DialogResult.OK)
{
textBox1.Text = "Save " + sfd.FileName;
}
}
private void btnFont_Click(object sender, EventArgs e)
{
if(fd.ShowDialog() == DialogResult.OK)
{
textBox1.Font = fd.Font;
}
}
private void btnColour_Click(object sender, EventArgs e)
{
if (cd.ShowDialog() == DialogResult.OK)
{
textBox1.ForeColor = cd.Color;
}
}
}
}
: 어떤 일정 주기로 반복해야하는 기능을 타이머라고 하며, 종료는 3가지 클래스 라이브러리가 존재한다.
일반적으로 사용하는 타이머는 System.Windows.Forms.Timer이다.
| 타이머 클래스 | 내용 |
|---|---|
| System.Windows.Forms.Timer | 사용자가 정의한 간격마다 이벤트를 발생시키는 타이머를 구현 (이 타이머는 Windows.Forms 응용 프로그램에서 사용할 수 있도록 최적화) |
| System.Threading.Timer | 지정된 간격으로 메소드를 실행하는 메커니즘으로 제공 |
| System.Timers.Timer | 응용프로그램에 주기적인 이벤트 생성 |
타이머 예시 코드
// 타이머를 이용해서 메세지 창 띄우기
public partial class Form1 : Form
{
private int x;
private int y;
private int h = 0;
private MsgForm msg;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (h > 193)
{
h = 0;
timer1.Stop();
Thread.Sleep(3000);
msg.Close();
} else
{
msg.Location = new Point(x, y - h);
msg.Show();
h = h + 10;
}
}
private void btnMsg_Click(object sender, EventArgs e)
{
x = Screen.PrimaryScreen.Bounds.Width - 244;
y = Screen.PrimaryScreen.Bounds.Height;
msg = new MsgForm();
timer1.Start();
}
}
GDI(Graphical Device Interface): 그래픽 디바이스에 독립적으로 기능을 제공해주는 인터페이스
GDI란 운영체제에서 그래픽 출력을 위해 그래픽 디바이스 드라이버를 제어해야 하는데 각 벤더사에서 제공하는 디바이스 드라이버가 각각 다르기 때문에 독립적으로 해당 기능을 제어하는 프로그램이 필요해지며 만들어진 것이 GDI이다. GDI는 위도우 운영체제에서 gdi.dll형태로 제공된다.
GDI+는 기존 GDI를 확장한 버전으로 GDI는 C언어 기반이었으나 GDI+는 객체지향 클래스의 집합으로 래핑한 형태
⇨ GDI와 GDI+는 따로 존재하며, GDI+는 gdiplus.dll의 형태로 존재한다.
펜: 선을 나타낼 때 사용하는 그래픽 객체
public Pen(Color, color, float width);
// 펜 객체 생성
Pen p = new Pen(ColorRed, 5);
브러시: 도형의 면을 채울 때 사용하는 그래픽 객체
브러시의 종류에는 단색 브러시, 해치 브러시, 그라디언트 브러시, 텍스쳐 브러시 등이 존재한다.
| 브러시 종류 | 설명 |
|---|---|
| SolidBrush | 단색 브러시로 도형 내부를 단색으로 채운다 |
| HatchBrush | 해치 브러시로 미리 설정된 다양한 패턴으로 채운다 |
| LinearGradientBrush | 그라디언트 브러시로 두 가지의 색상을 그라데이션으로 표현한다 |
| PathGradientBrush | 그라디언트 브러시로 개발자가 정의한 고유 경로에 따라 혼합된 색의 그라데이션을 사용하여 그린다 |
| TextureBrush | 이미지와 같은 질감을 사용하여 그린다 |
단색 브러시는 일반적인 브러시 형태로, 채울 색상을 인수로 전달한다.
public SolidBrush(Color color);
// 브러시 생성 코드
SolidBrush b = new SolidBrush(ColorBlue);
g.FillRectangle(b, 10, 10, 100, 100);
g.FillRectangle(Brushes.Red, 130, 10, 100, 100);
Graphics 클래스
: 기본적인 도형을 그리기 위한 API 제공
주요 메소드
| 메소드 | 설명 |
|---|---|
| DrawArc | 좌표, 너비, 높이의 쌍으로 지정된 타원의 부분을 나타내는 '호'를 그림 |
| DrawBezier | 네 개의 Point 구조체로 정의되는 3차원 곡선 스플라인을 그림 |
| CrawCurve | Point 구조체의 지정된 배열을 따라 카디널 스플라인을 그림 |
| DrawEllipse | 좌표, 높이, 너비의 쌍으로 지정된 경계 사각형에 의해 정의되는 타원을 그림 |
| DrawIcon | 지정된 아이콘에 의해 나타나는 이미지를 지정된 좌표에 그림 |
| DrawImage | 지정된 이미지를 지정된 위치에 그림 |
| DrawLine | 좌표에 의해 지정된 두 개의 점을 연결하는 선을 그림 |
| DrawPie | 좌표, 너비, 높이 및 두 개의 방사형 선에 의해 지정된 타원으로 정의된 부채꼴 모양을 그림 |
| DrawPolygon | Point 구조체의 배열에 의해 정의된 다각형을 그림 |
| DrawRectangle | 좌표, 너비, 높이에 의해 지정된 사각형을 그림 |
| DrawString | 지정된 위치에 Brush와 Font 객체로 지정된 텍스트 문자열을 그림 |
| FillEllipse | 좌표, 너비, 높이에 의해 지정된 사각형 내부에 내접하는 원을 채움 |
| FillRectangle | 좌표, 너비, 높이에 의해 지정된 사각형의 내부를 채움 |
| FillRegion | Region의 내부를 채움 |
| RotateTransform | 지정된 각도만큼 기하학적 변환을 수행 |
Recangle(x, y, width, height);
// 사각형 그리기
public void DrawRectangle(Pen pen, Rectangle rect);
// 면채우는 사각형 그리기
public void FillRectangle(Brush brush, Rectangle rect);
Recangle(x, y, width, height);
// 원그리기
public void DrawEllipse(Pen pen, Rectangle rect);
// 면을 채우는 원그리기
public void RillEllipse(Bursh brush, Rectangle rect);