53
-1- C# Programming 이현 현정 [email protected] [email protected] [email protected] [email protected] MCT/MCSD/MCAD/MCSD.NET MCT/MCSD/MCAD/MCSD.NET MCT/MCSD/MCAD/MCSD.NET MCT/MCSD/MCAD/MCSD.NET

C# Programming · 2015-01-21 · - 3 - 14 장. 비주얼c# 익스프레스 비주얼c# 익스프레스의구성 컨트롤의사용: 무조건따라해보기

Embed Size (px)

Citation preview

- 1 -

C# Programming

이이이이 현현현현 정정정정

[email protected]@[email protected]@hotmail.com

MCT/MCSD/MCAD/MCSD.NETMCT/MCSD/MCAD/MCSD.NETMCT/MCSD/MCAD/MCSD.NETMCT/MCSD/MCAD/MCSD.NET

- 2 -목차목차목차목차

� 1부부부부 C# 언어언어언어언어

� 1장 C, C++ 그리고 C#

� 2장 Hello, C#!

� 3장변수와자료형

� 4장연산자

� 5장흐름제어

� 6장메쏘드

� 7장클래스

� 8장배열과컬렉션

� 9장속성과인덱서

� 10장델리게이트와이벤트

� 11장예외처리

� 12장특성

� 13장일반화프로그래밍

� 2부부부부 .NET 프레임워크프레임워크프레임워크프레임워크활용활용활용활용

� 14장비주얼 C# 익스프레스시작하기

� 15장 C# 윈도우프로그래밍의기초

� 16장메모장만들기

� 17장파일관리자만들기 - Part 1

� 18장파일관리자만들기 - Part 2

� 19장 MyCanvas - GDI+

� 20장데이터베이스와 ADO.NET

� 21장 ADO.NET과함께하는 MyFriends

프로젝트

� 22장쓰레드(Thread)

� 23장네트워크프로그래밍

� 24장컴포넌트프로그래밍

� 25장 .NET 리모팅

� 26장이책에서다루지못한것들…

- 3 -

14장장장장. 비주얼비주얼비주얼비주얼 C# 익스프레스익스프레스익스프레스익스프레스

� 비주얼비주얼비주얼비주얼 C# 익스프레스의익스프레스의익스프레스의익스프레스의구성구성구성구성

� 컨트롤의컨트롤의컨트롤의컨트롤의사용사용사용사용 : 무조건무조건무조건무조건따라해보기따라해보기따라해보기따라해보기

- 4 -

15장장장장. C# 윈도우윈도우윈도우윈도우프로그래밍의프로그래밍의프로그래밍의프로그래밍의기초기초기초기초

� 도대체도대체도대체도대체무슨무슨무슨무슨일이일이일이일이일어나고일어나고일어나고일어나고있을있을있을있을걸까걸까걸까걸까?

� 윈도우는 어떻게 만들까?

� Application클래스

� Form클래스

-이벤트와 이벤트 처리기는 어떻게 연결하는 가

-윈도우의 모양은 어떻게 조정하는 가

-어떻게 다른 컨트롤의 컨테이너가 될 수 있는 가

- 5 -

16장장장장. 메모장메모장메모장메모장만들기만들기만들기만들기

� 메뉴메뉴메뉴메뉴만들기만들기만들기만들기

� 컨트롤컨트롤컨트롤컨트롤배치하기배치하기배치하기배치하기

� OpenFileDialog컨트롤컨트롤컨트롤컨트롤

� SaveFileDialog컨트롤컨트롤컨트롤컨트롤

� Form 컨트롤컨트롤컨트롤컨트롤속성속성속성속성변경하기변경하기변경하기변경하기

� 코드코드코드코드추가하기추가하기추가하기추가하기

� UnicodeOptoin속성속성속성속성추가하기추가하기추가하기추가하기

- 6 -

� OpenDocument() 작성하기작성하기작성하기작성하기 – StreamReader사용사용사용사용

� SaveDocument() 작성하기작성하기작성하기작성하기 - StreamWriter사용사용사용사용

� 메뉴메뉴메뉴메뉴이벤트이벤트이벤트이벤트처리기처리기처리기처리기작성하기작성하기작성하기작성하기

- 7 -�UI 구성하기구성하기구성하기구성하기

� ToolStrip컨트롤

•특징

•예

•Render Modes

� 메뉴 - MenuStrip

•Guideline

•메뉴추가

•이벤트처리

� 도구모음 -ToolStrip

•Click Event 처리

� 상태표시줄 - StatusStrip

•Run Time에상태표시줄변경하기

- 8 -�Professional Applications 만들기만들기만들기만들기

- 9 -

�Professional Applications 만들기만들기만들기만들기

- 10 -�UI 구성하기구성하기구성하기구성하기

� ToolStrip컨트롤

•특징

•예

•Render Modes

� 메뉴 - MenuStrip

•Guideline

•메뉴추가

•이벤트처리

� 도구모음 -ToolStrip

•Click Event 처리

� 상태표시줄 - StatusStrip

•Run Time에상태표시줄변경하기

- 11 -

1. ToolStrip컨트롤컨트롤컨트롤컨트롤

� Toolbars, Menus, Drop-down menus와와와와 Context menus을을을을위해위해위해위해공통적인공통적인공통적인공통적인 API 제공제공제공제공

� MenuStrip, ToolStrip, StatusStrip, ContextMenuStrip

� ToolStrip에서 상속받음

� 고급고급고급고급디자인디자인디자인디자인환경환경환경환경제공제공제공제공

- 12 -

� Item 종류종류종류종류

� ToolStripButton

� ToolStripMenuItem

� ToolStripTextBox

� ToolStripComboBox

� ToolStripProgressBar

� ToolStripDropDownButton

� Item layout options

� Item overflowing

� ToolStripContainer

� Item Customization

1.1 ToolStrip컨트롤컨트롤컨트롤컨트롤특징특징특징특징

- 13 -

1.2 ToolStrip컨트롤컨트롤컨트롤컨트롤예예예예

- 14 -1.3 ToolStrip컨트롤컨트롤컨트롤컨트롤 –––– Render Modes

� Professional

� System

� Custom

- 15 -2. 메뉴메뉴메뉴메뉴 - MenuStrip

Menu HeadingMenu Heading

SubmenuSubmenu

Menu ItemsMenu Items

- 16 -2.1 Guidelines

GuidelineGuidelineGuideline 예예예예예예예예예예예예

첫첫첫첫글자는글자는글자는글자는대문자로대문자로대문자로대문자로..첫첫첫첫글자는글자는글자는글자는대문자로대문자로대문자로대문자로.. File, Edit, HelpFile, Edit, Help

Access Key를를를를지정지정지정지정…Access Key를를를를지정지정지정지정… File, Edit, HelpFile, Edit, Help

Naming conventions를를를를사용사용사용사용Naming conventions를를를를사용사용사용사용 FileItem, EditItem, HelpItem

FileItem, EditItem, HelpItem

대화상자를대화상자를대화상자를대화상자를보여주는보여주는보여주는보여주는메뉴에는메뉴에는메뉴에는메뉴에는

…를를를를표시표시표시표시

대화상자를대화상자를대화상자를대화상자를보여주는보여주는보여주는보여주는메뉴에는메뉴에는메뉴에는메뉴에는

…를를를를표시표시표시표시 Save As…Save As…

- 17 -2.2 메뉴메뉴메뉴메뉴추가추가추가추가

- 18 -2.3 이벤트이벤트이벤트이벤트처리처리처리처리

this.openToolStripMenuItem.Text = "Open";this.openToolStripMenuItem.Text = "Open";this.openToolStripMenuItem.Text = "Open";this.openToolStripMenuItem.Text = "Open";

this.openToolStripMenuItem.Click +=this.openToolStripMenuItem.Click +=this.openToolStripMenuItem.Click +=this.openToolStripMenuItem.Click +=

new new new new SSSSystem.EventHandlerystem.EventHandlerystem.EventHandlerystem.EventHandler

(this.openToolStripMenuItem_Click);(this.openToolStripMenuItem_Click);(this.openToolStripMenuItem_Click);(this.openToolStripMenuItem_Click);

////////…………

private void openToolStripMenuItem_Click(object sender, private void openToolStripMenuItem_Click(object sender, private void openToolStripMenuItem_Click(object sender, private void openToolStripMenuItem_Click(object sender, EventArgs e)EventArgs e)EventArgs e)EventArgs e)

{{{{

// // // // …………

}}}}

this.openToolStripMenuItem.Text = "Open";this.openToolStripMenuItem.Text = "Open";this.openToolStripMenuItem.Text = "Open";this.openToolStripMenuItem.Text = "Open";

this.openToolStripMenuItem.Click +=this.openToolStripMenuItem.Click +=this.openToolStripMenuItem.Click +=this.openToolStripMenuItem.Click +=

new new new new SSSSystem.EventHandlerystem.EventHandlerystem.EventHandlerystem.EventHandler

(this.openToolStripMenuItem_Click);(this.openToolStripMenuItem_Click);(this.openToolStripMenuItem_Click);(this.openToolStripMenuItem_Click);

////////…………

private void openToolStripMenuItem_Click(object sender, private void openToolStripMenuItem_Click(object sender, private void openToolStripMenuItem_Click(object sender, private void openToolStripMenuItem_Click(object sender, EventArgs e)EventArgs e)EventArgs e)EventArgs e)

{{{{

// // // // …………

}}}}

- 19 -3. 도구모음도구모음도구모음도구모음 - ToolStrip

- 20 -3.1 Click Event 처리처리처리처리

private void toolStripButton1_Click(object sender, EventArgs e)private void toolStripButton1_Click(object sender, EventArgs e)private void toolStripButton1_Click(object sender, EventArgs e)private void toolStripButton1_Click(object sender, EventArgs e)

{{{{

openToolStripMenuItem.PerformClick();

}}}}

private void toolStripButton1_Click(object sender, EventArgs e)private void toolStripButton1_Click(object sender, EventArgs e)private void toolStripButton1_Click(object sender, EventArgs e)private void toolStripButton1_Click(object sender, EventArgs e)

{{{{

openToolStripMenuItem.PerformClick();

}}}}

- 21 -4. 상태표시줄상태표시줄상태표시줄상태표시줄 StatusStrip

- 22 -4.1 Run Time에에에에상태표시줄상태표시줄상태표시줄상태표시줄변경하기변경하기변경하기변경하기

toolStripStatusLabel1.Text = openFileDialog1.FileName;toolStripStatusLabel1.Text = openFileDialog1.FileName;

toolStripStatusLabel1.TextAlignAlignAlignAlign = = = = MiddleCenterMiddleCenterMiddleCenterMiddleCenter;;;;toolStripStatusLabel1.TextAlignAlignAlignAlign = = = = MiddleCenterMiddleCenterMiddleCenterMiddleCenter;;;;

- 23 -�대화상자대화상자대화상자대화상자

� 공통대화상자

1.1 공통대화상자의 사용

1.2 속성 지정

1.3 공통대화상자로부터 정보 읽기

1.4 실습

� 사용자 정의 대화상자

2.1 종류

2.2 사용자 정의 대화상자 만들기

2.3 실습

- 24 -1. 공통공통공통공통대화상자대화상자대화상자대화상자 (Common Dialog Box)

� OpenFileDialog

� SaveFileDialog

� FontDialog

� ColorDialog

� PrintDialog

� PageSetupDialog

� PrintPreveiwDialog

- 25 -1.1 공통대화상자의공통대화상자의공통대화상자의공통대화상자의사용사용사용사용

� 대화상자를대화상자를대화상자를대화상자를폼위로폼위로폼위로폼위로

드래깅드래깅드래깅드래깅

� 대화상자를대화상자를대화상자를대화상자를띄우기띄우기띄우기띄우기

위한위한위한위한이벤트를이벤트를이벤트를이벤트를추가추가추가추가

private void private void private void private void OpenMenuItem_Click(objectOpenMenuItem_Click(objectOpenMenuItem_Click(objectOpenMenuItem_Click(object sender, sender, sender, sender, System.EventArgsSystem.EventArgsSystem.EventArgsSystem.EventArgs e) {e) {e) {e) {

openFileDialog1.ShowDialog();openFileDialog1.ShowDialog();openFileDialog1.ShowDialog();openFileDialog1.ShowDialog();

}}}}

private void private void private void private void OpenMenuItem_Click(objectOpenMenuItem_Click(objectOpenMenuItem_Click(objectOpenMenuItem_Click(object sender, sender, sender, sender, System.EventArgsSystem.EventArgsSystem.EventArgsSystem.EventArgs e) {e) {e) {e) {

openFileDialog1.ShowDialog();openFileDialog1.ShowDialog();openFileDialog1.ShowDialog();openFileDialog1.ShowDialog();

}}}}

- 26 -1.2 속성속성속성속성지정지정지정지정

속성창속성창속성창속성창속성창속성창속성창속성창

OptionsOptions

openFileDialog1.Filter = openFileDialog1.Filter = openFileDialog1.Filter = openFileDialog1.Filter =

@A@A@A@A””””C:C:C:C:\\\\C# C# C# C# fielsfielsfielsfiels|*.|*.|*.|*.cs|XMLcs|XMLcs|XMLcs|XML files|*.xmlfiles|*.xmlfiles|*.xmlfiles|*.xml||||all files(*.*)|*.*all files(*.*)|*.*all files(*.*)|*.*all files(*.*)|*.*””””;;;;

- 27 -

1.3 공통대화상자로부터공통대화상자로부터공통대화상자로부터공통대화상자로부터정보정보정보정보읽기읽기읽기읽기

DialogResult

OK, Cancel, Abort, Retry, Ignore, Yes, No, (or None)OK, Cancel, Abort, Retry, Ignore, Yes, No, (or None)

if (openFileDialog1.ShowDialog() == if (openFileDialog1.ShowDialog() == if (openFileDialog1.ShowDialog() == if (openFileDialog1.ShowDialog() == DialogResult.OKDialogResult.OKDialogResult.OKDialogResult.OK) {) {) {) {

MessageBox.Show(MessageBox.Show(MessageBox.Show(MessageBox.Show(openFileDialog1.FileNameopenFileDialog1.FileNameopenFileDialog1.FileNameopenFileDialog1.FileName););););

}}}}

if (openFileDialog1.ShowDialog() == if (openFileDialog1.ShowDialog() == if (openFileDialog1.ShowDialog() == if (openFileDialog1.ShowDialog() == DialogResult.OKDialogResult.OKDialogResult.OKDialogResult.OK) {) {) {) {

MessageBox.Show(MessageBox.Show(MessageBox.Show(MessageBox.Show(openFileDialog1.FileNameopenFileDialog1.FileNameopenFileDialog1.FileNameopenFileDialog1.FileName););););

}}}}

- 28 -2. 사용자사용자사용자사용자정의정의정의정의대화상자대화상자대화상자대화상자

� 종류종류종류종류

� Modal Dialog Box –ShowDialog()

� Modeless Dialog Box – Show()

- 29 -2.1 사용자사용자사용자사용자정의정의정의정의대화상자대화상자대화상자대화상자만들기만들기만들기만들기

솔루션 탐색기에서 Form 추가솔루션 탐색기에서 Form 추가

Form 속성을 Dialog Box로 설정Form 속성을 Dialog Box로 설정

FormBorderStyleFormBorderStyleFormBorderStyleFormBorderStyle ::::FixedDialogFixedDialogFixedDialogFixedDialog

ControlBoxControlBoxControlBoxControlBox :false:false:false:false

MinimizeBoxMinimizeBoxMinimizeBoxMinimizeBox :false:false:false:false

MaximizeBoxMaximizeBoxMaximizeBoxMaximizeBox :false:false:false:false

ShowInTaskbarShowInTaskbarShowInTaskbarShowInTaskbar :false:false:false:false

- 30 -2.1 사용자사용자사용자사용자정의정의정의정의대화상자대화상자대화상자대화상자만들기만들기만들기만들기

OK / Cancel Button 추가OK / Cancel Button 추가

DialogBox띄우기 :MenuItem Event Handler 구현DialogBox띄우기 :MenuItem Event Handler 구현

Button Button Button Button 속성속성속성속성 지정지정지정지정: : : : Text,Name,DialogResultText,Name,DialogResultText,Name,DialogResultText,Name,DialogResult

Form Form Form Form 속성속성속성속성 지정지정지정지정 : : : : AcceptButton,CancelButtonAcceptButton,CancelButtonAcceptButton,CancelButtonAcceptButton,CancelButton

private void private void private void private void menuItemDialogmenuItemDialogmenuItemDialogmenuItemDialog____Click(objectClick(objectClick(objectClick(object sender, sender, sender, sender, System.EventArgsSystem.EventArgsSystem.EventArgsSystem.EventArgs e)e)e)e)

{{{{

MessageDialogMessageDialogMessageDialogMessageDialog dlgdlgdlgdlg = new = new = new = new MessageDialogMessageDialogMessageDialogMessageDialog ();();();();

if (if (if (if (dlg.ShowDialogdlg.ShowDialogdlg.ShowDialogdlg.ShowDialog () == () == () == () == DialogResult.OKDialogResult.OKDialogResult.OKDialogResult.OK))))

{{{{

message = message = message = message = dlg.Messagedlg.Messagedlg.Messagedlg.Message;;;;

Invalidate();Invalidate();Invalidate();Invalidate();

}}}}

}}}}

- 31 -2.1 사용자사용자사용자사용자정의정의정의정의대화상자대화상자대화상자대화상자만들기만들기만들기만들기

55 DialogBox에서 입력한 정보 얻기DialogBox에서 입력한 정보 얻기

public class public class public class public class MessageDialogMessageDialogMessageDialogMessageDialog : : : : System.Windows.Forms.FormSystem.Windows.Forms.FormSystem.Windows.Forms.FormSystem.Windows.Forms.Form

{{{{

private private private private System.Windows.Forms.TextBoxSystem.Windows.Forms.TextBoxSystem.Windows.Forms.TextBoxSystem.Windows.Forms.TextBox textBox1;textBox1;textBox1;textBox1;

// ..// ..// ..// ..

public string Message // Get Property public string Message // Get Property public string Message // Get Property public string Message // Get Property 구현구현구현구현

{{{{

get { return textBox1.Text;}get { return textBox1.Text;}get { return textBox1.Text;}get { return textBox1.Text;}

}}}}

}}}}

private void private void private void private void menuItemDialogmenuItemDialogmenuItemDialogmenuItemDialog____Click(objectClick(objectClick(objectClick(object sender, sender, sender, sender, System.EventArgsSystem.EventArgsSystem.EventArgsSystem.EventArgs e)e)e)e)

{{{{

MessageDialogMessageDialogMessageDialogMessageDialog dlgdlgdlgdlg = new = new = new = new MessageDialogMessageDialogMessageDialogMessageDialog ();();();();

if (if (if (if (dlg.ShowDialogdlg.ShowDialogdlg.ShowDialogdlg.ShowDialog () == () == () == () == DialogResult.OKDialogResult.OKDialogResult.OKDialogResult.OK){){){){

message = message = message = message = dlg.Message;Invalidatedlg.Message;Invalidatedlg.Message;Invalidatedlg.Message;Invalidate();();();();

}}}}

}}}}

- 32 -2.1 사용자사용자사용자사용자정의정의정의정의대화상자대화상자대화상자대화상자만들기만들기만들기만들기

55 Tab Order 지정하기Tab Order 지정하기

•보기보기보기보기 메뉴메뉴메뉴메뉴 –––– 탭탭탭탭 순서로순서로순서로순서로 지정지정지정지정

•ControlControlControlControl의의의의 Tab Index Tab Index Tab Index Tab Index 속성속성속성속성 지정지정지정지정,,,,Tab Stop Tab Stop Tab Stop Tab Stop 속성속성속성속성

- 33 -�GDI+ 소개소개소개소개

� GDI+란?

� Graphics 객체

� 화면에 그리기

� 선 그리기

� 도형 그리기

� 텍스트 출력하기

- 34 -1. GDI+ 란란란란?

� GDI+ (새로운새로운새로운새로운 Graphics Device Interface)

� 비디오 디스플레이와 프린터에 그래픽이나 텍스트출력을 할 수 있게 해준다.

� 장치 독립적인 응용프로그램(Device-Independent Applications)을 만들 수 있다.

� GDI+ 범주범주범주범주

� 2-D vector graphics

� Text

� Images

- 35 -1. GDI+ 란란란란?

� Namespace

� System.Drawing

� System.Drawing.Drawing2D

� System.Drawing.Imaging

� System.Drawing.Printing.

� System.Drawing.Design

� System.Drawing.Text

.

- 36 -2. Graphics 객체객체객체객체

� 드로잉표면을제공

� 특정위치에텍스트와그래픽을그려주는

메서드를제공

Graphics myGraphic = this.CreateGraphics();

' 선 그리기

myGraphic.Graphics.DrawLine(myPen,X1,Y1,X2,Y2) ;

' 브러쉬로 특정 영역 채우기

myGraphic.FillRectangle(myBrush,X1,Y1,X2,Y2);

' 폰트와 브러쉬를 사용하여 텍스트 출력하기

myGraphic.DrawString(myText,myFont,myBrush,X1,Y1);

Graphics myGraphic = this.CreateGraphics();

' 선 그리기

myGraphic.Graphics.DrawLine(myPen,X1,Y1,X2,Y2) ;

' 브러쉬로 특정 영역 채우기

myGraphic.FillRectangle(myBrush,X1,Y1,X2,Y2);

' 폰트와 브러쉬를 사용하여 텍스트 출력하기

myGraphic.DrawString(myText,myFont,myBrush,X1,Y1);

- 37 -2.1 Graphics 객체객체객체객체얻기얻기얻기얻기

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

Graphics g = this.CreateGraphics();

}

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

Graphics g = this.CreateGraphics();

}

private void form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

//..

}

private void form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

//..

}

protected override void OnPaint(PaintEventArgs e)

{

Graphics g = pe.Graphics;

//…

}

protected override void OnPaint(PaintEventArgs e)

{

Graphics g = pe.Graphics;

//…

}

- 38 -3. 화면에화면에화면에화면에그리기그리기그리기그리기

// Form – Paint Eventprivate void Form1_Paint(object sender,

System.Windows.Forms.PaintEventArgs e){

Font drawFont = new Font("Arial", 16); SolidBrush drawBrush =

new SolidBrush(System.Drawing .Color.Black); Point drawPoint = new Point(0,0); e.Graphics.DrawString(“Hello,World”, drawFont, drawBrush,

drawPoint);

}

// Form – Paint Eventprivate void Form1_Paint(object sender,

System.Windows.Forms.PaintEventArgs e){

Font drawFont = new Font("Arial", 16); SolidBrush drawBrush =

new SolidBrush(System.Drawing .Color.Black); Point drawPoint = new Point(0,0); e.Graphics.DrawString(“Hello,World”, drawFont, drawBrush,

drawPoint);

}

•Paint Event Paint Event Paint Event Paint Event 발생발생발생발생 –––– Invalidate()Invalidate()Invalidate()Invalidate()

• Form Form Form Form –––– Paint Event Paint Event Paint Event Paint Event 처리하거나처리하거나처리하거나처리하거나 OnPaintOnPaintOnPaintOnPaint()()()()를를를를 재정의재정의재정의재정의

- 39 -4. 선선선선그리기그리기그리기그리기

Pen myPen = new Pen(Color.Blue);Pen myPen = new Pen(Color.Blue);

� Pen

� 선을 그리거나 도형의 경계선을 그릴 때 사용된다.

� 선선선선그리는그리는그리는그리는함수함수함수함수

Pen myPen = new Pen(Color.Blue);

Pen pen = new Pen(brush,4)

pen.PenType = PenType.PathGradient;

pen.Alignment = PenAlignment.Center;

Pen myPen = new Pen(Color.Blue);

Pen pen = new Pen(brush,4)

pen.PenType = PenType.PathGradient;

pen.Alignment = PenAlignment.Center;

Pen blackPen = new Pen(Color.Black, 3);

e.Graphics.DrawLine(blackPen, 100.0F,100.0F, 500.0F, 100.0F);

e.Graphics.DrawRectangle(new Pen(Color.Red), 10, 10, 100, 100);

Pen blackPen = new Pen(Color.Black, 3);

e.Graphics.DrawLine(blackPen, 100.0F,100.0F, 500.0F, 100.0F);

e.Graphics.DrawRectangle(new Pen(Color.Red), 10, 10, 100, 100);

- 40 -5. 도형도형도형도형그리기그리기그리기그리기

� Brush

� 텍스트를 그리거나 도형 안의 영역을 그릴 때사용된다.

� 도형도형도형도형그리는그리는그리는그리는함수함수함수함수

Point p1 = new Point(50,50);Point p2 = new Point(100,100);LinearGradientBrush lnBrush = new LinearGradientBrush(p1,p2,Color.Red,Color.Yellow);

Rectangle rect = new Rectangle(50,50,100,100);LinearGradientBrush lnBrush = new LinearGradientBrush (rect,Color.Red, Color.Yellow,LinearGradientMode.ForwardDiagonal);

Point p1 = new Point(50,50);Point p2 = new Point(100,100);LinearGradientBrush lnBrush = new LinearGradientBrush(p1,p2,Color.Red,Color.Yellow);

Rectangle rect = new Rectangle(50,50,100,100);LinearGradientBrush lnBrush = new LinearGradientBrush (rect,Color.Red, Color.Yellow,LinearGradientMode.ForwardDiagonal);

SolidBrush myBrush = new SolidBrush(Color.Blue);SolidBrush myBrush = new SolidBrush(Color.Blue);

e.Graphics.FillRectangle(e.Graphics.FillRectangle(e.Graphics.FillRectangle(e.Graphics.FillRectangle(myBrushmyBrushmyBrushmyBrush, 150, 150, 100, 100);, 150, 150, 100, 100);, 150, 150, 100, 100);, 150, 150, 100, 100);e.Graphics.FillRectangle(e.Graphics.FillRectangle(e.Graphics.FillRectangle(e.Graphics.FillRectangle(myBrushmyBrushmyBrushmyBrush, 150, 150, 100, 100);, 150, 150, 100, 100);, 150, 150, 100, 100);, 150, 150, 100, 100);

- 41 -5. 도형도형도형도형그리기그리기그리기그리기

� Brush 종류종류종류종류

� SolidBrush

� TextureBrush

� LinerGradientBrush

� PathGradientBrush

� HatchBrush

- 42 -6. 텍스트텍스트텍스트텍스트출력하기출력하기출력하기출력하기(글자글자글자글자그리기그리기그리기그리기)

� Font

� 텍스트 (글자)를 출력할 때 사용된다.

� 글자글자글자글자그리는그리는그리는그리는함수함수함수함수

Pen myPen = new Pen(Color.Blue);

Pen pen = new Pen(brush,4)

pen.PenType = PenType.PathGradient;

pen.Alignment = PenAlignment.Center;

Pen myPen = new Pen(Color.Blue);

Pen pen = new Pen(brush,4)

pen.PenType = PenType.PathGradient;

pen.Alignment = PenAlignment.Center;

Pen blackPen = new Pen(Color.Black, 3);

e.Graphics.DrawLine(blackPen, 100.0F,100.0F, 500.0F, 100.0F);

Pen blackPen = new Pen(Color.Black, 3);

e.Graphics.DrawLine(blackPen, 100.0F,100.0F, 500.0F, 100.0F);

Font myFont = new Font("Arial", 12);Font myFont = new Font("Arial", 12);

- 43 -6.1 글자글자글자글자크기크기크기크기정보정보정보정보구하기구하기구하기구하기

� 글자를글자를글자를글자를그리려면그리려면그리려면그리려면

1. 글자의위치를구한다.

2. 글자를그리는데상요항 Font와 Brush를선택한다.

3. Graphics.DrawString메서드를호출한다.

e.Graphics.DrawString(myText, myFont, myBrush, X1, Y1);e.Graphics.DrawString(myText, myFont, myBrush, X1, Y1);

� 글자글자글자글자크기크기크기크기구하기구하기구하기구하기

textWidth = e.Graphics.MeasureString(myText,myFont).Width;textHeight = e.Graphics.MeasureString(myText,myFont).Height;

textWidth = e.Graphics.MeasureString(myText,myFont).Width;textHeight = e.Graphics.MeasureString(myText,myFont).Height;

- 44 -

배포배포배포배포

� Windows 응용응용응용응용프로그램의프로그램의프로그램의프로그램의설치설치설치설치및및및및배포배포배포배포

� 설치 및 배포 프로젝트

� ClickOnce배포배포배포배포

� VS2005에서 추가됨

- 45 -�설치설치설치설치및및및및배포배포배포배포프로젝트프로젝트프로젝트프로젝트

- 46 -설치설치설치설치및및및및배포배포배포배포프로젝트프로젝트프로젝트프로젝트

� 프로젝트프로젝트프로젝트프로젝트작성작성작성작성

� 프로젝트프로젝트프로젝트프로젝트구성구성구성구성

� 설치설치설치설치편집기들편집기들편집기들편집기들

� 파일 시스템 편집기

� 파일 형식 편집기

� 시작 조건 편집기

� 사용자 인터페이스 편집기

� 프로젝트프로젝트프로젝트프로젝트빌드빌드빌드빌드

� 설치설치설치설치

- 47 -파일파일파일파일시스템시스템시스템시스템편집기편집기편집기편집기

- 48 -�ClickOnce배포배포배포배포

� Visual Studio 2005의의의의 IDE에서에서에서에서지원지원지원지원

� 프로젝트프로젝트프로젝트프로젝트디자이너디자이너디자이너디자이너

� 게시

� 보안

� 게시마법사게시마법사게시마법사게시마법사

� 어플리케이션을

웹서버에복사

� FTP나네트워크로

파일공유

- 49 -게시옵션게시옵션게시옵션게시옵션

- 50 -ClickOnce모델모델모델모델

ClickOnceWizard

WindowsForms Project

VS2005

웹 서버

wwwroot

TestApp

TestApp.application

TestApp_1.0.0.0

TestApp.exe.deploy

TestApp.exe.manifest

http://Server/TestApp/TestApp.application

버전을 체크하고 필요하면 업데이트

버전 디렉토리에서 manifest file를 다운로드

Manifest의 permission을 체크

OK이면 다운로드받고 실행

- 51 -

Web PageWeb Page

Link to ManifestLink to Manifest

Deployment ManifestDeployment Manifest

1.0 ���� 1.1

1.0

Application Manifest

1.1

Application Manifest

ClickOnce기본기본기본기본개념개념개념개념

� Application manifest

� 어플리케이션을 기술

� 예: 어플리케이션이어떤어셈블리로구성되는가?

� Deployment manifest

� 어플리케이션배포를기술

� 예: 클라이언트가어느버전을사용해야만되는가?

- 52 -

ClickOnce업데이트업데이트업데이트업데이트옵션들옵션들옵션들옵션들

� On application startup

� 업데이트가발견되면사용자에게어플리케이션을업데이트할것인지를묻는다

� After application startup

� 업데이트가발견되면사용자에게다음번 실행시에업데이트할것인지를묻는다

� Required updates

� 최소한으로요구되는버전(minimum required version )을사용할것을명시

� Programmatic updating

� 업데이트경험을토대로프로그래밍으로제어

- 53 -

ClickOnce프로그래밍프로그래밍프로그래밍프로그래밍

� Application Updating

� Update Now 메뉴를구현

� 클라이언트와서버프로그램을동기화하고자할때

� When-to-update logic를커스터마이징

서버로드에따라업데이트를제한

� On-demand download

� 진보적인설치

� Shell

� System.Deployment namespace

� System.Deployment.Application namespace

� ApplicationDeployment