WinForms Graphics PictureBox с динамической шириной - PullRequest
0 голосов
/ 27 сентября 2010

Я создаю winform .NET приложение.Он должен показывать графику в формате баров.Я использую Picturebox, потому что это единственный способ, которым я знаю, как это сделать (если кто-то знает лучший способ, пожалуйста, скажите мне).

Я динамически добавляю линии (полосы графика)с этим кодом:

int currentX = this.lineAmmount * (lineWidth + lineMargin);
pictureBox.CreateGraphics().DrawLine(new Pen(color, lineWidth), //Pen
    currentX, pictureBox.Height, //Starting (x, y)
    currentX, pictureBox.Height - Convert.ToInt32(value * graphicsScale)); //Ending (x, y)
this.lineAmmount++;

Это работает просто отлично.

Теперь я хочу, чтобы pictureBox имел горизонтальную полосу прокрутки.Так что я положил pictureBox в панель с автопрокруткой = true.Теперь то, что мне нужно, чтобы динамически увеличить ширину pictureBox.Поэтому я добавил этот код после добавления каждой строки:

pictureBox.Width = Math.Max(this.lineAmmount * (lineWidth + lineMargin), 205);

(205 - минимальная ширина, которую я хочу).

Этот код также работает отлично.Ширина увеличена.В первых строках Math.Max ​​всегда возвращает 205, после нескольких строк начинает возвращать значение orher.С этого момента ВСЕ ЛИНИИ исчезают !!!

Пожалуйста, помогите !!

Заранее спасибо и извините за мой плохой английский,

Диего

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Я обнаружил элемент управления Chart. Он делает все это автоматически.

0 голосов
/ 27 сентября 2010

Где написан тот код, который вы разместили в первом окошке?Это в методе обновления элемента управления?

Конечно, диаграмма будет более подходящей здесь

...