private void storageinfotimer_Tick(object sender, EventArgs e) { //Die Zahlen zur aktuellen Partition erhalten ulong[] values = DriveFunctions.GetPartitionSizeData(driveletter); //Die Zahlen in die Felder eintragen lbsizefilledbyte.Text = ExtraFunctions.GetNumberWithPoints(Convert.ToDouble(values[2])); lbsizefreebyte.Text = ExtraFunctions.GetNumberWithPoints(Convert.ToDouble(values[1])); lbsizegesbyte.Text = ExtraFunctions.GetNumberWithPoints(Convert.ToDouble(values[0])); lbsizefilled.Text = ExtraFunctions.UnitChange(Convert.ToDouble(values[2])); lbsizefree.Text = ExtraFunctions.UnitChange(Convert.ToDouble(values[1])); lbsizeges.Text = ExtraFunctions.UnitChange(Convert.ToDouble(values[0])); //Jetzt muss der Balken gezeichnet werden. Die Farbe ist AquaMarine Graphics g = picstoragebar.CreateGraphics(); g.Clear(Color.LightGray); Color fillcolor = Color.Aqua; Brush brush = new SolidBrush(fillcolor); //Die Werte müssen gezeichnet werden. Da die Größe des Balkens sich verändern kann, muss es //dynamisch berechnet werden können double percentfilled = values[2] * 100 / values[0]; double lenbar = picstoragebar.Size.Width / 100 * percentfilled; //Die Bar wird jetzt gezeichnet g.FillRectangle(brush, 0, 0, Convert.ToSingle(lenbar), picstoragebar.Size.Height); //Die Objekte disposen (da die viel RAM verbrauchen) g.Dispose(); brush.Dispose(); //Das Textlabel mit den Speicher auch aktualisieren lbstorageinfo.Text = ExtraFunctions.UnitChange(Convert.ToDouble(values[1])) + " frei von " + ExtraFunctions.UnitChange(Convert.ToDouble(values[0])); }