Заполните пространство между двумя кривыми в декартовом графе - PullRequest
0 голосов
/ 30 апреля 2011

У меня возникли некоторые трудности с ощущением расстояния между двумя кривыми на графике в моей программе WinForms.

В основном у меня есть две кривые, которые я рисую на растровом изображении, используя этот метод:

    public Bitmap DrawEnvelope(PointF[] u, PointF[] d)
    {
        g = Graphics.FromImage(box);
        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.PixelOffsetMode = PixelOffsetMode.HighQuality;

        Pen pengraph = new Pen(Color.FromArgb(50, 0 ,0 ,200), 1F);
        pengraph.Alignment = PenAlignment.Center;

        g.DrawCurve(pengraph, u, 0); //uperline
        g.DrawCurve(pengraph, d, 0); //downline

        g.Dispose();

        return box;
    }

Теперь я хочу заполнить пространство между этими двумя кривыми цветом. Как это можно сделать?

Я посмотрел в MSDN и нашел такой метод, как FillClosedCurve. но это не поможет мне в этом случае.

Спасибо.

Решено комментарием Аха

        joinedCurves.AddRange(u);
        joinedCurves.AddRange(d.Reverse());

        PointF[] fillPoints = joinedCurves.ToArray();
        SolidBrush fillBrush = new SolidBrush(Color.FromArgb(50, 0, 0, 200));
        FillMode newFillMode = FillMode.Alternate;

        g.FillClosedCurve(fillBrush, fillPoints, newFillMode, 0);

1 Ответ

1 голос
/ 30 апреля 2011
List<PointF> joinedCurves = new List<PointF>();
joinedCurves.AddRange(u);        
jointCurves.AddRange(d.Reverse());      
PointF[] fillPoints = joinedCurves.ToArray();    
SolidBrush fillBrush = new SolidBrush(Color.FromArgb(50, 0, 0, 200));    
FillMode newFillMode = FillMode.Alternate;    
g.FillClosedCurve(fillBrush, fillPoints, newFillMode, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...