1

我用这段代码绘制多边形:

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);

如何调整多边形的大小类似于以下?

图片

4

2 回答 2

4

尝试这个:

var g  = e.Graphics;
var points=new PointF[] { new PointF(0, 0), new PointF(1, 0), new PointF(0, 1) };

var st=g.SaveState();

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.Restore(st);

它在不同大小的不同位置绘制相同形状的多边形。

形式

(我添加的红色注释)

于 2013-10-22T21:29:30.640 回答
1

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

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

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

于 2013-10-22T21:08:19.917 回答