Autor Beitrag
Raven280438
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Do 07.10.10 21:03 
Hi,

ich möchte ein Bild in einem FileStream speichern und später in einer PictureBox ausgeben.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
FileStream textur_stream;
[...]
StreamReader sr = new StreamReader(this.openFileDialog1.FileName);
this.textur_stream = sr.ReadToEnd();
[...]
this.pB_textur.Image = Image.FromStream(textur_stream);


Das funktioniert aber nicht:
Zitat:

C:\Users\Roman\Documents\Visual Studio 2008\Projects\ST - Textur\ST - Textur\Form1.cs(59,46): error CS0029: Cannot implicitly convert type 'string' to 'System.IO.FileStream'


Kann mir jemand sagen wie ich es richtig mache?


Gruß
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 07.10.10 21:57 
Ein StreamReader ist ein TextReader, der hat hier sicher nichts zu suchen. Schau dir lieber einmal die FileStream-Konstruktoren an.

_________________
>λ=
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 07.10.10 22:03 
Hallo,

wo hast du denn den Code her? Selbst geschrieben?

user profile iconRaven280438 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
StreamReader sr = new StreamReader(this.openFileDialog1.FileName);					

Wozu brauchst du denn einen StreamReader?
MSDN:
Implementiert einen TextReader, der Zeichen aus einem Bytestream in einer bestimmten Codierung liest.

user profile iconRaven280438 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
FileStream textur_stream;
this.textur_stream = sr.ReadToEnd();

user profile iconRaven280438 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
this.pB_textur.Image = Image.FromStream(textur_stream);					

Die Methode StreamReader.ReadToEnd gibt einen String zurück, der den ganzen Streaminhalt als Text enthält.

user profile iconRaven280438 hat folgendes geschrieben Zum zitierten Posting springen:
Kann mir jemand sagen wie ich es richtig mache?

Wenn wirklich einige Zeit zwischen dem Laden und dem zuweisen zur PictureBox vergeht, könntest du den Inhalt des Streams in einem Suche im MSDN MEMORYSTREAM zwischenspeichern:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
// Den Stream zum Zwischenspeichern erstellen
MemoryStream memoryStream = new MemoryStream();

// Die Datei öffnen (wird beim Verlassen des using-Blocks automatisch wieder geschlossen)
using (FileStream fileStream = new FileStream(Dateiname)) {
  // Inhalt des Dateistreams in den Memory-Stream kopieren
  fileStream.CopyTo(memoryStream);
}

// Den Memory-Stream "zurückspulen"
memoryStream.Seek(0, SeekOrigin.Begin);

/* ... */

// Das Bild aus dem Memory-Stream laden
pB_texture.Image = Image.FromStream(memoryStream);


Aber warum öffnest du die Datei nicht einfach erst, wenn du sie brauchst? Existiert sie dann nicht mehr?