Domanda

Sto facendo un WinForm .NET app. Essa deve mostrare un grafico in formato bar. Io sto usando un PictureBox perché è l'unico modo che conosco come farlo (se qualcuno conosce un modo migliore, mi dica).

Sto aggiungendo dinamicamente le linee (le barre del grafico) con questo codice:

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++;

che funziona semplicemente perfetto.

Quello che voglio ora è il pictureBox di avere una barra di scorrimento orizzontale. Quindi quello che ho messo il pictureBox in un pannello con scorrimento automatico = true. Ora quello che mi serviva proprio per aumentare dinamicamente la larghezza pictureBox. Così ho aggiunto questo codice dopo aggiungo ogni riga:

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

(205 è la larghezza minima che voglio).

Questo codice funziona anche greate. La larghezza viene aumentata. Con le prime linee Math.max restituisce sempre 205, dopo un paio di righe inizia restituire il valore orher. Da quel momento in poi tutte le linee scompaiono !!!

Si prega di aiuto !!

Grazie in anticipo e scusate per il mio cattivo inglese,

Diego

È stato utile?

Soluzione

ho scoperto il controllo Chart. E fa tutto ciò che automaticamente.

Altri suggerimenti

Dove è scritto che il codice, che hai postato nella prima casella? È a metodo di aggiornamento del controllo?

Certo, grafico sarà più appropriato qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top