dercreeper
Goto Top

"Blassheit" bei einem label in C-sharp

Also ich habe mir gerade ein Spiel ausgedacht, und wollte so eine Art Animation am Anfang, also;

private void Form1_Load (object sender, EventArgs e)
{
        label1.Text = "Level 01";  
        System.Threading.Thread.Sleep(200);
        int blassheit = 0;
        while (blassheit != 50)
        {
            //Code zum Sichtbarkeit (um 2/100) geringer machen
           label1.Refresh();
           System.Threading.Thread.Sleep(5);
           blassheit += 1;
        }

}

ich bin relativ ratlos weil ich schon alle Eigenschaften durchgeguckt habe und mir kein weg einfällt, das irgendwie mit farbcodes, ohne 100 zeilen zu verbrauchen, umzusetzen.
C#

Vielen Dank schon im voraus,
derCreeper

Content-Key: 350542

Url: https://administrator.de/contentid/350542

Printed on: April 23, 2024 at 12:04 o'clock

Member: StefanKittel
Solution StefanKittel Sep 30, 2017 at 08:24:11 (UTC)
Goto Top
Moin,

wenn Du von einem Spiel spricht wirst Du ja eine Grafikengine brauchen.
Aber als einfach-Vorschlag würde ich diese beiden Funktionen anschauen
- SetTextColor
- RGB(200,200,200)

Stefan
Member: derCreeper
derCreeper Sep 30, 2017 at 08:43:03 (UTC)
Goto Top
ich glabe es ist eher so:
label1.ForeColor = RGB(00,00,00)

Aber, meinst du ungefähr das:?
        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "Level 01";  
            System.Threading.Thread.Sleep(200);
            int blassheit = 0;
            int Blau = 200;
            int Rot = 0;
            int Gruen = 0;
            while (blassheit != 50)
            {
                label1.ForeColor = RGB(Rot,Gruen,Blau);
                Blau -= 4;
                Rot += 0;
                ...............
            }
        }

ich probier das mit RGB(); mal aus und schreibe nochmal.
Member: derCreeper
derCreeper Sep 30, 2017 at 08:49:35 (UTC)
Goto Top
ich habe es eingegeben aber der hat keine definition für RGB...
Member: StefanKittel
StefanKittel Sep 30, 2017 at 08:58:07 (UTC)
Goto Top
Moin,

ich habes nicht ausprobiert

label1.ForeColor = System.Drawing.Color.Red;
label1.ForeColor = Color.FromArgb(0, 0, 0);
//(R, G, B) (0, 0, 0 = black)

sonst google mal nach c# label textcolor

Stefan
Member: Snowman25
Solution Snowman25 Oct 10, 2017 updated at 15:45:45 (UTC)
Goto Top
Was du brauchst nennt sich "opacity" bzw. den "alpha"-channel.

In Deinem Fall (Opacity eines Labels), musst du mit der BackColor des Labels arbeiten:
private void Form1_Load (object sender, EventArgs e)
{
        label1.Text = "Level 01";  
        System.Threading.Thread.Sleep(200);
        int blassheit = 0;
        while (blassheit != 255)
        {
           // 255 Schritte mit je 5ms Abstand = 1,275 Sekunden
           Color labelColor = Color.FromArgb(blassheit, Color.Black);
           label1.BackColor = labelColor;
           label1.Refresh();
           System.Threading.Thread.Sleep(5);
           blassheit += 1;
        }
}

Allerdings möchte ich anmerken, dass eine For-Schleife eingängier wäre als eine while-schleife. Und die while-schleife sollte auch nicht auf =! 255 prüfen sondern besser auf < 255