VB.NET 2008/VB - 그래픽

그래픽 - 펜, 선 및 사각형

본클라쓰 2012. 4. 5. 11:13

 

GDI+에서 선을 그리려면 Graphics 개체와 Pen 개체를 만들어야 한다. Graphics 개체는 실제로 그리기를 수행하는 메서드를 제공하며 Pen 개체에는 선의 색, 두께 및 스타일 같은 특성이 저장된다.

 

 

 

선 그리기

 

선을 그리려면 Graphics 개체의 DrawLine 메서드를 호출해야 한다. Pen 개체는 DrawLine 메서드에 대한 인수 중 하나로 전달된다.

 

g.DrawLine(Pens.AliceBlue, New Point(10, 10), New Point(20, 100))

 

또는

 

g.DrawLine(Pens.AliceBlue, 10, 10, 20,)

 

 

 

Pen 개체 만들기

 

Pen 개체를 만들 때 몇 가지 특성을 지정할 수 있다. 예를 들어, Pen 생성자를 사용하여 색과 너비를 지정할 수 있다. 다음 예제에는 (0,0)과 (60,30)을 연결하는 너비 2의 파랑 선을 그린다.

 

Dim myPen As New Pen(Color.Blue, 2)
myGraphics.DrawLine(myPen, 0, 0, 60, 30)

 

또는

 

Dim myPen As New Pen(Color.Blue)

myPen.Width = 2
myGraphics.DrawLine(myPen, 0, 0, 60, 30)

 

 

 

펜의 굵기 및 맞춤 설정

 

Pen 개체를 만들 때 펜 굴기를 생성자에 대한 인수 중 하나로 지정할 수 있다. 또한 Pen 클래스의 Width 속성을 사용하여 펜 굵기를 변경할 수 있다.

 

이론적인 선의 굵기는 0이다. 굵기가 1픽셀인 선을 그릴 경우 픽셀은 이론적인 선의 가운데에 의치하게 된다. 굵기가 2픽셀 이상인 선을 그리는 경우에는 픽셀이 이론적인 선의 가운데에 위치하거나 한쪽 옆에 나타난다. Pen 개체의 펜 맞춤 속성을 설정하면 해당 펜으로 그리는 픽셀의 상대적인 위치를 이론적인 선을 기준으로 결정할 수 있다.

 

Alignment 속성의 값을 기본값인 Center로 설정하여 녹색 펜으로 그리는 픽셀이 이론적인 선의 가운데에 위치하도록 지정한다. 아래 그림에 이 예제에서 그린 선이 나와 있다.

 

 

Dim blackPen As New Pen(Color.FromArgb(255, 0, 0, 0), 1)
Dim greenPen As New Pen(Color.FromArgb(255, 0, 255, 0), 10)
greenPen.Alignment = PenAlignment.Center

' Draw the line with the wide green pen.
e.Graphics.DrawLine(greenPen, 10, 100, 100, 50)

' Draw the line with the thin black pen.
e.Graphics.DrawLine(blackPen, 10, 100, 100, 50)

 

 

 

파선 및 선 끝

 

Pen 개체는 DashStyle과 같이 선의 특징을 지정하는 데 사용할 수 있는 속성도 제공한다. 다음 예제는 (100, 50)과 (300,80)을 연결하는 파선을 그린다.

 

myPen.DashStyle = DashStyle.Dash
myGraphics.DrawLine(myPen, 100, 50, 300, 80)

 

Pen 개체의 속성을 사용하여 선의 다양한 특성을 설정할 수 있다. StartCap 및 EndCap 속성은 선 끝 모양을 지정한다. 선끝 모양은 평평하거나, 사각형이거나, 둥글거나, 삼각형일 수 있으며 모양을 사용자 지정할 수도 있다. LineJoin 속성을 하용하면 연결된 선을 마이터(날카로운 모퉁이와 조인), 빗면, 원형 스타일로 처리할지 아니면 클리핑할지 지정할 수 있다. 다음 그림은 다양한 끝 모양과 연결 스타일의 선을 보여준다.

 

 

다음 예제에서는 한 쪽 긑은 화살표 모양이고 다른 한쪽 끝은 둥근 모양인 선을 그린다. 이 예제를 실행하면 다음 그림과 같은 선이 만들어진다.

 

 

Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255), 8)
pen.StartCap = LineCap.ArrowAnchor
pen.EndCap = LineCap.RoundAnchor
e.Graphics.DrawLine(pen, 20, 175, 300, 175)

 

 

 

선 조인

 

선 조인은 끝 부분이 만나거나 겹치는 두 개의 선에 의해 만들어지는 공통 영역이다. GDI+에서는 마이터, 빗면, 원형 등 세 가지 선 조인 스타일을 지정할 수 있다. 선 조인 스타일은 Pen 클래스의 속성이다. Pen 개체에 선 조인 스타일을 지정하면 이 펜을 사용하여 그리는 GraphicsPath 개체의 모든 연결선에 같은 조인 스타일이 적용된다.

 

Dim path As New GraphicsPath()
Dim penJoin As New Pen(Color.FromArgb(255, 0, 0, 255), 8)

path.StartFigure()
path.AddLine(New Point(50, 200), New Point(100, 200))
path.AddLine(New Point(100, 200), New Point(100, 250))

penJoin.LineJoin = LineJoin.Bevel
e.Graphics.DrawPath(penJoin, path)

 

 

 

사용자 지정 파선 그리기

 

GDI+에서는 DashStyle 열거형에 나열된 몇 가지 대시 스타일을 제공한다. 이러한 표준 대시 스타일이 적합하지 않은 경우에는 사용자 지정 대시 패턴을 만들 수 있다.

 

사용자 지정 파선을 그리려면 대시 및 공백의 길이를 배열에 넣은 다음 이 배열을 Pen 개체의 DashPattern 속성 값으로 지정한다.

 

Dim dashValues As Single() = {5, 2, 15, 4}
Dim blackPen As New Pen(Color.Black, 5)
blackPen.DashPattern = dashValues
e.Graphics.DrawLine(blackPen, New Point(5, 5), New Point(405, 5))

 

아래 그림에 이 예제에서 그린 파선이 나와 있다.

 

 

 

사각형 그리기

 

사각형을 그리려면 Graphics 개체와 Pen 개체가 필요하다. Graphics 개체는 DrawRectangle 메서드를 제공하고 Pen 개체에는 선의 색과 두께 같은 특성이 저장된다. Pen 개체는 DrawRectangle 메서드에 대한 인수 중 하나로 전달된다.

 

myGraphics.DrawRectangle(myPen, 100, 50, 80, 40)

 

Rectangle 개체에는 사각형의 정보를 조작하고 수집할 수 있는 메서드와 속성이 있다. 예를 들어 Inflate Offset 메서드는 사각형의 크기와 위치를 변경한다. IntersectsWith 메서드는 사각형이 다른 사각형과 교차하는지 여부를 나타내고 Contains 메서드는 지정된 점이 사각형 내부에 있는지 여부를 나타낸다.

 

 

 

출처) http://msdn.microsoft.com/ko-kr/library/2bdt6zkb(v=vs.90).aspx

 

 

'VB.NET 2008 > VB - 그래픽' 카테고리의 다른 글

그래픽 - 카디널 스플라인  (0) 2012.04.05
그래픽 - 다각형  (0) 2012.04.05
그래픽 - 타원 및 원호  (0) 2012.04.05
그래픽 - Graphics 개체 만들기  (0) 2012.04.05
그래픽 - Windows Forms의 그래픽 개요  (0) 2012.04.05