具有动态宽度的WinForms Graphics PictureBox

时间:2010-09-27 13:41:09

标签: c# .net winforms graphics picturebox

我正在制作一个winform .NET应用程序。它必须以条形格式显示图形。我正在使用一个图片盒,因为这是我知道怎么做的唯一方法(如果有人知道更好的方法,请告诉我)。

我使用以下代码动态添加线条(图形的条形图):

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放入一个autoscroll = true的面板中。现在我需要它动态增加pictureBox宽度。所以我在添加每一行后添加了这段代码:

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

(205是我想要的最小宽度)。

该代码也有效。宽度增加。使用第一行Math.Max总是返回205,在几行后它开始返回orher值。从那一刻开始,所有的线路都消失了!

请帮助!!

提前致谢并抱歉我的英语不好,

2 个答案:

答案 0 :(得分:1)

我找到了Chart控件。它会自动完成所有这些。

答案 1 :(得分:0)

你写在第一个框中的那段代码在哪里写的?它是在控件的更新方法中吗?

当然,图表在这里更合适