من فکر می کنم شما point ها تون رو به ترتیب به دستور FillClosedCurve تحویل نمی دهید چون از path.PathPoints استفاده می کنید ترتیب نقاط بهم می خورد الان من این دو دستور رو استفاده می کنم و درست جواب می دهد:
Point[] p=new Point[]{new Point(50,10),new Point(20,50),new Point(80,50)};
Brush b = Brushes.Brown;
g.FillClosedCurve(b,p);
این همون مثلث رو می سازه که درست هم هست همانطور که انتظار دارم.
این یکی هم مربعی رسم می کند که انتظار دارم:
Point[] p = new Point[] { new Point(50, 100), new Point(200, 100), new Point(200, 200), new Point(50, 200) };
Brush b = Brushes.Brown;
g.FillClosedCurve(b, p);
این کد ها رو تست کنید شاید منظورتون همین باشه.و شما در ترتیب نقاط ورودی مشکل دارید این نکته رو هم توجه کنید که اگر نقطه اول و آخر رو یکی ندهید خودش نقطه آخر را به اولین نقطه ای که در داخل آرایه وجود دارد وصل می کند.
شایدم باز هم متوجه نشده باشم.!