Forum: PC-Programmierung C# .Net PictureBox


von Andi (Gast)


Lesenswert?

Hallo ich hab ein kleines Problem mit meiner C# .net Programm.

ich habe eine .BMP Datei die ich mit pictureBox1.Load("C:\\...) lade.

Nun habe ich aber den wunsch, dass die Datei nicht nur einmal geladen 
wird, sodern ständig, da sich die Datei verändern kann (muss aber nicht)

Würde mich über Codeschnipsel und Hilfe sehr freuen.

Mit pictureBox1.Update();
und pictureBox1.Refresh(); habe ich es leider nicht hingekommen

Viele Grüsse

Andi

: Verschoben durch User
von nocheinGast (Gast)


Lesenswert?

Wieso rufst du nicht load nochmal auf? Update und refresh veranlassen 
nur ein Neuzeichnen... Es wird aber besser sein, mit einem 
FileSystemWatcher das Verzeichnis auf Änderungen zu überwachen, oder das 
Änderungsdatum zu vergleichen...

von Andi (Gast)


Lesenswert?

Danke muss ich mal schauen wie das geht

von Thomas E. (thomase)


Lesenswert?

Andi schrieb:
> da sich die Datei verändern kann

Kann sie nicht.
Eine geöffnete Datei kann nicht verändert werden.

mfg.

von Ich (Gast)


Lesenswert?

Nimm ein Timer und Lad das Bild über PB.Load(bla); immer wieder neu!?

von Olek (Gast)


Lesenswert?

Bin mir nicht sicher was Du machen willst. Ändert sich dein Bild im 
Verzeichnis aus dem du es lädst? oder ändert sich das Bild komplett wenn 
du es in C# bearbeitest? Falls zweiteres, dann könnte dir das folgende 
helfen.

//Bild laden
Bitmap TestBild = new Bitmap("Bild.jpg");

//Bild anzeigen, ohne TestBild dabei zu verändern
pictureBox1.Image = (Bitmap)TestBild.Clone();

von xfgf (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Kann sie nicht.
> Eine geöffnete Datei kann nicht verändert werden.

Diese Funktion wird kaum dauerhaft die Datei offen halten...

von Alex W. (Firma: FH) (olek)


Lesenswert?

xfgf schrieb:
> Thomas Eckmann schrieb:
>> Kann sie nicht.
>> Eine geöffnete Datei kann nicht verändert werden.
>
> Diese Funktion wird kaum dauerhaft die Datei offen halten...

normal wird nur ne kopie in den Speicher geschrieben und die Datei dann 
nicht mehr weiter beachtet.

von Andi (Gast)


Lesenswert?

Finde ich super wenn hier eine Diskusion ergibt.

Also ich hab jetzt mal ein paar Varianten durchgespielt aber das ist 
immer noch nicht so wie ich mir das gedach habe.

Das C Programm öffnet über den Befehl das ein Bild "C:\\bild" und dieses 
Bild wird in einer PictureBox dargestellt. Die Bildinformation (das 
Bild) ist auf der Festplatte gespeichert. Das funktioniert super.

Ich habe jetzt ein zweites Programm das das C:\\bild erzeugt, bzw. wenn 
die Datei vorhanden ist überschreibt.

Was ich jetzt machen will ist beide Programm ausführen und wenn das eine 
Programm C:\\bild erzeugt soll es in der Picturebox von meinem C 
Programm soft aktualisiert wird und auch sofort dargestellt werden.  So 
will ich überprüfen ob das Bild auch richtig verändert unter C:\\bild 
gespeichert wurde.

Ich hoffe mir kann da jemand einen Denkanstoss geben.

Vielen Dank

Andi

von Olek (Gast)


Lesenswert?

versuchs doch über das Änderungsdatum der Datei, wie hier breits 
vorgeschlagen wurde.


// Dateien einlesen
System.IO.FileInfo[] fileNames = dirInfo.GetFiles("*.*");

//Ausgabe von Datei, letztem Zugriff und der größe
foreach (System.IO.FileInfo fi in fileNames)
{
 Console.WriteLine("{0}: {1}: {2}", fi.Name, fi.LastAccessTime, 
fi.Length);
}

von Arc N. (arc)


Lesenswert?

Andi schrieb:
> Ich hoffe mir kann da jemand einen Denkanstoss geben.

Wurde schon gemacht: s.o. FileSystemWatcher
http://msdn.microsoft.com/de-de/library/x7t1d0ky(v=VS.80).aspx

Thomas Eckmann schrieb:
> Andi schrieb:
>> da sich die Datei verändern kann
>
> Kann sie nicht.
> Eine geöffnete Datei kann nicht verändert werden.

Geht problemlos, wenn man (zumindest unter Win) das nicht beim Öffnen 
der Datei verbietet
http://msdn.microsoft.com/en-us/library/aa365430(v=vs.85).aspx

von Andi (Gast)


Lesenswert?

Danke für die Hilfe!!!

viele Grüsse

Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.