Autor Beitrag
kl.feigling
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 26.07.13 15:58 
Hallo, ich möchte gerne ein Bild, was ich von meiner Cam bekomme in eine Picturebox auf einer anderen Form ausgeben. Dies klappt auch beim ersten mal. Leider aktualisiert sich jedoch nicht das Bild. Was mach ich falsch ?

Form1:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
    
            try
            {
                if (ICube.ICubeSDK_SaveToFile(g_iCurrentCam, "Bild.bmp") != ICube.IC_SUCCESS)
                    MessageBox.Show("Error: ICubeSDK_SaveToFile");   //Bild wird aus Kamera geladen 

                Bitmap b1 = new Bitmap("Bild.bmp");  //Bild in speichern 

                form2.Id = b1;

                form2.aktualisieren(sender, e);
            }
            catch { }

    public partial class Form2 : Form
    {
        private Bitmap id;
        public Bitmap Id
        {
            get { return this.id; }
            set { this.id = value; }
        }

        public Form2()
        {
            InitializeComponent();
           
            pictureBox2.Load(Application.StartupPath+"\\"+"logo.png");
        }

        public void aktualisieren(object sender, EventArgs e)
        {
            if (this.pictureBox2.Image != null)
            {
                this.pictureBox2.Image.Dispose();
                this.pictureBox2.Image = null;
            }
            pictureBox2.Image = this.Id;

            this.pictureBox2.Refresh();
        }

Wenn ich jeweils das Bild auf die Festplatte speicher und dann öffne klappt es ... dauert aber leider sehr lange .
Hoffe ihr könnt mir Helfen :-)

Ps. Ist mein erstes Projekt in c# also totaler anfänger ...

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus C# & .NET Tutorials verschoben am Fr 26.07.2013 um 16:34
Moderiert von user profile iconTh69: Titel geändert.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 26.07.13 16:43 
Hallo kl.feigling :welcome:

hat deine Library evtl. noch eine andere Methode (z.B. SaveToStream), dann bräuchtest du nicht den Umweg über eine externe Datei gehen, sondern könntest direkt dein Bitmap aus dem Stream erstellen lassen?

Entferne aber ersteinmal den leeren try...catch, denn Exceptions sollte man nicht still einfach abfangen und dann im Programmablauf weitermachen. Evtl. wird die Datei nämlich gelockt, so daß das zweite Hineinschreiben (und alle folgenden) fehl schlägt und du daher keine Änderung in der PictureBox siehst?

P.S. Dein Beitrag war im falschen Forum (C# & .NET Tutorials), daher habe ich es nach C#-WinForms verschoben.
Und C#-Tags hinzugefügt, damit man den Code besser lesen kann - demnächst bitte selber so einstellen, danke.

Für diesen Beitrag haben gedankt: kl.feigling
kl.feigling Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 30.07.13 11:50 
Hallo, ich habe immer noch eine kleine Frage zu diesem Thema. Ich habe es jetzt geschaft, dass ich das aktuelle Bild als Bitmap an die form2 übergebe, leider aktuallisiert die Picturebox sich nicht :-( Was mache ich falsch? Zum Testen hab ich auch das Bild gespeichert und das klappt super.
Hoffe ihr könnt mir wieder einen kleinen Tipp geben.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
        public Form2()
        {
            InitializeComponent();
      
        }

        public void aktualisieren(Bitmap bitmap)
        {
            Bitmap Bild_ausgabe = bitmap;
            if (this.pictureBox2.Image != null)
            {
                this.pictureBox2.Image.Dispose();
                this.pictureBox2.Image = null;
            }    
            pictureBox2.Image = Bild_ausgabe;
            this.pictureBox2.Refresh();
            Bild_ausgabe.Save(Application.StartupPath + "\\" + "ausgabe_test.png");    //Zum testen ob das Bild da ist
        }


Gruß Kl.feigling

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 30.07.13 13:05 
Hallo,

ich tippe darauf, daß du die GUI blockierst (s. z.B. myCSharp.de - Warum blockiert mein GUI?) und daher Windows nicht dazu kommt, die PictureBox zu aktualisieren.
In welcher Methode rufst du denn form2.aktualisieren(bitmap) auf?
Damit die GUI nicht blockiert, solltest du einen Timer verwenden (anstatt einer Schleife o.ä).