Autor Beitrag
Rassi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Mo 22.02.10 14:09 
Hallo.
Ich möchte ein Backgroundimage nachladen (10 mal die Sekunde).
Nur leider wird immer nur das erste zugewiesene Bild angezeigt.
Muss ich das alte Backgroundimage irgendwie löschen?

Bisher rufe ich immer nur folgenden Befehl auf.
ausblenden C#-Quelltext
1:
pictureBox1.BackgroundImage = m_Image;					


Für die Image-Zuweisung der Picturebox funktioniert das auch.
ausblenden C#-Quelltext
1:
pictureBox1.Image = m_Image;					


Da wird das Bild immer aktuallisiert.

Gruß
Rasmus
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 22.02.10 15:18 
Hallo,

ich meine man muss die Refresh-Methode noch aufrufen.

Gruß Daniel
Rassi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Mo 22.02.10 15:38 
Hallo.

Ja, du hast recht. Nun wird das Bild neu aufgebaut.
Bringt mich leider nicht weiter (siehe www.c-sharp-forum.de...icturebox_97927.html )

Danke und Gruß
Rasmus
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 22.02.10 15:57 
Also ich verstehe dein Problem nicht.

Ich habe gerade ein PictureBox "mainPB" gemacht. Über diese habe ich eine transparente PicutreBox "transparentPB" gelegt und ihre BackColor-Eigenschaft auf Transparenz sowie Parent = mainPB gelegt.

ausblenden C#-Quelltext
1:
2:
transparentePB.BackColor = Color.Transparent;
            transparentePB.Parent = mainPB;


Der transparenten PictureBox weiße ich ein Bild mit einem Kreis zu:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
            Image i = new Bitmap(this.transparentePB.Width, this.transparentePB.Height);

            Graphics g = Graphics.FromImage(i);

            g.DrawPie(new Pen(Color.Red), new Rectangle(0,0this.transparentePB.Width - 5this.transparentePB.Height - 5), 0,360);

            this.transparentePB.Image = i;


In einem Timer lasse ich ein Image auf die mainPB zeichnen
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
        Random r = new Random();

        private delegate void DrawImageDelegate(Color c);

void t_Tick(object sender, EventArgs e)
        {
            this.BeginInvoke(
                new DrawImageDelegate(DrawImage),
                Color.FromArgb(r.Next(0255), r.Next(0255), r.Next(0255)));
        }

        private void DrawImage(Color c)
        {
            Image i = new Bitmap(this.mainPB.Width, this.mainPB.Height);

            Graphics g = Graphics.FromImage(i);

            g.FillRectangle(new SolidBrush(c), new Rectangle(0,0, i.Width, i.Height));

            this.mainPB.Image = i;
            this.mainPB.Refresh();
        }


Macht das was ich will ... ein Kreis ist immer über der bestimmten Position, während sich der "Hintergrund" verändert... So wie ich es im anderne Thread vermutet habe. Ist das nicht das was du willst?

Gruß Daniel