2010-03-29 11 views
10

Nie mogę się dowiedzieć, jak załadować obraz z PictureBox z mapy bitowej w pamięci. Czy to możliwe, czy też muszę utworzyć plik tymczasowy dla bitmapy?Załaduj obraz Picturebox z pamięci?

+1

Możliwe duplikaty: http://stackoverflow.com/questions/743549 – dtb

+0

Jak to zrobić? masz bitmapę w pamięci? – SLaks

+0

Jest odwrotnie, ładowanie obrazu z pliku, co jest niezwykłe. Użyj klasy Bitmap. –

Odpowiedz

20

jakim formacie jest obraz w pamięci?

Jeśli masz rzeczywisty obiekt Bitmap, po prostu przypisać go do PictureBox, jak sugeruje DTB:

pictureBox.Image = bitmap; 

Jeśli masz obraz jako ciąg bajtów przechowywanych w strumieniu, trzeba aby załadować obraz ze strumienia:

var image = Image.FromStream(stream); 
pictureBox.Image = image; 

Jeśli zamiast mieć uchwyt okna GDI do bitmapy, użyj

var image = Image.FromHbitmap(handle); 
pictureBox.Image = image; 

Zasadniczo trudno jest odpowiedzieć na twoje pytanie bardziej niż sugestiami, kiedy nie powiedziałeś nam, w jakim formacie znajduje się mapa bitowa.

+0

Otrzymałem wyjątek' System.ArgumentException: Parameter is invalid valid. ", Gdy próbowałem załadować obraz ze strumienia. –

+0

@BalagurunathanMarimuthu Proponuję opublikować własne pytanie, aby uzyskać pomoc w danym kontekście; trudno jest uzyskać tak niewiele informacji. – Bevan

2
pictureBox.Image = bitmap; 
+0

brakuje tutaj parametru "Obrazek jako Byte() = GetBytes (ListView2.Items (index) .SubItems (8) .Text) Konwerter Dim jako nowy ImageConverter() PictureBox1.Image = DirectCast (converter.ConvertFrom (picture) , Image) ' –

4

Można utworzyć bitmapę z MemoryStream:

pictureBox.Image = new Bitmap(new MemoryStream(byteArray)); 
+0

w którym momencie bezpieczne jest jawne usunięcie obiektu MemoryStream? Would: using (var ms = new MemorySteam (byteArray)) {pictureBox.Image = new Bitmap (ms)}; bądź bezpieczny ? –

+0

@MoeSisko: Tak naprawdę nie musisz pozbywać się MemoryStream; nie mają niezarządzanych resoruces. (tylko "bajt []") Ale tak; powinno być w porządku. – SLaks

+0

brakuje tutaj parametru "Obrazek jako Byte() = GetBytes (ListView2.Items (index) .SubItems (8) .Text) Dim konwerter jako nowy ImageConverter() PictureBox1.Image = DirectCast (konwerter.ConvertFrom (obrazek) , Image) ' –