如何在C#中调整多边形的大小?

时间:2013-10-22 21:00:36

标签: c# .net gdi+ system.drawing

我使用以下代码绘制Polygon:

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

2 个答案:

答案 0 :(得分: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

(由我添加的红色注释)

答案 1 :(得分:2)

你有几个选择。一个简单而相当愚蠢的解决方案是使用linq:

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

我认为这种方式很容易理解。可能是更好的方法,但如果这就是你所做的一切,那就足够了。