Ich frage mich, ob es möglich ist, einen bestimmten Prozentsatz eines Rectangle-Objekts zu füllen, das auf dem Bildschirm gezeichnet wurde, so dass es sich wie eine Fortschrittsleiste verhält, wo Sie seine "Ebene" auf und ab gehen können . Insbesondere würde ich es lieber von oben nach unten füllen als von links nach rechts.Teilweise füllen ein Rectangle-Objekt
0
A
Antwort
1
Sie können dies versuchen.
private void button1_Click(object sender, EventArgs e)
{
panel1.Width = 400;
panel1.Height = 50;
using (Graphics g = this.panel1.CreateGraphics())
{
g.Clear(Color.Black);
Pen pen = new Pen(Color.Red, 2);
for (int i = 0; i <= 50;i++)
{
g.DrawRectangle(pen, 0, 0, 400, i);
Thread.Sleep(100);
}
pen.Dispose();
}
}
+0
Wenn man sich das anschaut, sieht es so aus, als würde dieser Code ein Rectangle zeichnen, dessen tatsächliche Höhe skaliert, und nicht nur die Farbe innerhalb seiner Begrenzungskanten? –
+0
@AlexWatts: Hast du es versucht? – jp2code
Vielleicht könnten Sie ein kleineres Rechteck in ein größeres setzen und das innere vollständig ausfüllen. Dann mach den inneren in Stufen größer. –
Das war, was ich für ein Backup dachte, nachdem ich nicht in der Lage war, Füllung zu manipulieren, um nur an einem Teil des Rectangle zu arbeiten. Ich dachte mir, ich würde mir auch etwas genaueres anschauen. Freut mich zu wissen, dass es keine schlechte Idee ist! –
Beachten Sie, dass DrawRectangle unten rechts um einen deaktiviert ist! Andere als das Verwenden eines wachsenden zweiten Rechtecks (oder, einfacher: die Überladung mit vier ganzen Zahlen und einer wachsenden Höhe und einem schrumpfenden y) ist der richtige Weg. Vielleicht möchten Sie auch LinearGradientBrush für Farbeffekte studieren! – TaW