нарисовать несколько кривых в WinForms Picturebox - PullRequest
1 голос
/ 20 марта 2011

Я работаю над программой, в которой я хочу рисовать диодные кривые в приложении WinForms.У меня есть список названий диодов, и у меня есть их точки, как вы можете видеть в правой части рисунка.Это напряжение как X и ток как Y (кривая содержит около 50 точек).

Что я хочу сделать, это выбрать один или несколько диодов из списка, кривая которого появится на моем графике.То, что вы видите, это просто графическая коробка, заполненная bmp.Я знаю, что это не надежное решение, поэтому я спрашиваю вас, что может быть лучшим подходом для такой вещи?Я не знаю ни одного хорошего компонента, который мог бы заставить меня сделать это.Так что мне просто нужно знать, что может быть лучшим подспорьем для этой задачи?

A quick view of what I want

Диодная кривая что-то вроде:

Diode curve

В моей программе может быть до 100 диодных кривых, которые все (одиночные или множественные) следует нарисовать, щелкнув по ним в списке.

Так что вы думаете?

ОБНОВЛЕНИЕ

ТАКЖЕ важно отменить выбор булавки на кривой, ее кривая должна быть удалена из графика!

Ярисуя ту ось, которую вы видите, используя код ниже:

    Bitmap xyCords = new Bitmap(500, 500);
Graphics g = Graphics.FromImage(xyCords);
g.DrawLine(penAxis, 250, 0, 250, 500);
g.DrawLine(penAxis, 0, 250, 500, 250);
curveBox.Image = xyCords;

как это возможно позже, если я создаю новую графику, я добавляю ее следующим образом:

curveBox.Image += newGraphic;

** Пожалуйста, дайте мне знатьесли есть какой-либо компонент или что-то, что уже может делать то, что я хочу.или покажи мне хороший подход!Спасибо!

1 Ответ

3 голосов
/ 20 марта 2011

Попробуйте использовать Graphics.DrawCurve . Вы просто помещаете все нужные вам точки в массив и передаете их и ручку методу.

Edit: Добавьте это после кода, чтобы доказать себе, что оба графика сосуществуют. Чтобы стереть одну или другую, просто нарисуйте те же точки, но в цвете фона растрового изображения (проверьте это, я не помню, что это).

Point[] ptarray = new Point[3];
ptarray[0] = new Point(250, 250);
ptarray[1] = new Point(300, 300);
ptarray[2] = new Point(350, 400);

Pen pengraph = new Pen(Color.Green, 0.75F);
g.DrawCurve(pengraph, ptarray);

Point[] ptarray2 = new Point[3];
ptarray2[0] = new Point(100, 100);
ptarray2[1] = new Point(200, 150);
ptarray2[2] = new Point(250, 250);

Pen pengraph2 = new Pen(Color.Yellow, 1.25F);
g.DrawCurve(pengraph2, ptarray2);
...