2013-10-22 2 views
-1

이 코드로 다각형을 그릴 :C에서 폴리곤의 크기를 조정하는 방법은 무엇입니까?

Graphics surface; 
surface = this.CreateGraphics(); 
SolidBrush brush = new SolidBrush(Color.Olive); 
Point[] points = { new Point(50, 50), new Point(250, 50), new Point(50, 250) }; 
surface.FillPolygon(brush, points); 

에서는 다음과 같은 다각형의 크기를 조정?

Pic

+1

당신은 당신의 점의 값을 변경해야합니다.

+0

'System.Drawing.Matrix' 클래스와'Graphics.Transform' 속성을 살펴보십시오. – Rotem

+0

@Rotem : 다각형 크기 조정을 위해 System.Drawing.Matrix 및 Graphics.Transform 사용을 도와주세요. –

답변

2

당신은 몇 가지 옵션이 있습니다. 간단한, 오히려 바보 솔루션은 LINQ를 사용하는 것입니다 :

double resizeValue = 1.5; 
points.Select(x => new Point(x.X*resizeValue, x.Y*resizeValue); 

그런 식으로 이해하기 간단하다, 나는 생각한다. 더 나은 방법일지도 모르지만, 이것이 전부라면 충분할 것입니다.

+0

다음 질문은 [0,0 ] : – Rotem

+0

사이즈 변경 용 폴리곤의 중심을 사용하고 싶습니다. –

+0

동일한 센터를 공유하기 위해 다각형이 필요하지 않은 경우에만 작동한다는 점에 유의하고 싶습니다. 그렇지 않으면 간단한 번역을 추가로 수행해야합니다. – Roberto

3

이 시도 :

다른 크기와 다른 위치에 같은 모양의 다각형을 그립니다
var g = e.Graphics; 
var points=new PointF[] { new PointF(0, 0), new PointF(1, 0), new PointF(0, 1) }; 

var mx=g.Transform.Clone(); 

g.TranslateTransform(100f, 100f); 
g.ScaleTransform(40f, 40f); 
g.FillPolygon(Brushes.Olive, points); 
g.Transform=mx; 

g.TranslateTransform(300f, 100f); 
g.ScaleTransform(80f, 80f); 
g.FillPolygon(Brushes.MediumOrchid, points); 
g.Transform=mx; 

.

Form

(나 추가 빨간색 주석)

+0

은 TranslateTransform에서 100,100을 다각형의 중심으로합니까? –

+0

이 코드를 테스트하지만 다각형 중심에서 크기를 조정하지 않습니다. –

+0

다각형이 삼각형이고 중심점을 그리려면 먼저 중심점을 계산해야합니다. – ja72