Assuming that the part you are having difficulty with is this:
case MouseButtons.Middle:
Point[] offsetPoint=polygonPoints.ToArray();
int resizeValue = 10;
offsetPoint.Select(x => new Point(x.X*resizeValue, x.Y*resizeValue));
graphics.DrawPolygon(new Pen(Color.Green), offsetPoint);
polygonPoints.Clear();
break;
Then it does offset a point - but you then throw it way...
The Select method creates a new Enumerable, which is what you want, but...it doesn't replace the old one.
Probably, what you want to do is:
case MouseButtons.Middle:
Point[] offsetPoint=polygonPoints.ToArray();
int resizeValue = 10;
offsetPoint = offsetPoint.Select(x => new Point(x.X*resizeValue, x.Y*resizeValue)).ToArray();
graphics.DrawPolygon(new Pen(Color.Green), offsetPoint);
polygonPoints.Clear();
break;
Which stores the newly offset Points so you can use them.