2017-11-08 15 views
0

Ich habe meine Bilder von Buchstaben in einer separaten Tabelle und ich definierte einen Foriegn Schlüssel für das Ich möchte jetzt auf alle Daten in der Datenrasteransicht klicken, um die Fotos dieser Ebene in der Kontrolle des Bildes zu zeigen. Ich habe die Bestellung für den Abruf der Fotos geschrieben. Natürlich weiß ich nicht, ob es richtig ist und ich weiß nicht, wie ich das Bild kontrollieren soll. CodeWie kann ich ein wiederhergestelltes Bild von SQL auf Bildkontrolle in WPF anzeigen?

 SqlConnection imageConnection = new SqlConnection(@"Data Source = ZAHRA; Initial Catalog = Baygani; inte"); 

     SqlCommand imageCommand = new SqlCommand(@"select Pictures.pic1,Pictures.pic2,Pictures.pic3,Pictures.pic4,Pictures.pic5,Pictures.pic6,Pictures.pic7,Pictures.pic8,Pictures.pic9, 
     Pictures.pic10 from Pictures,Latters where Pictures.idlatter=Latters.id ", imageConnection); 

     imageConnection.Open(); 
     SqlDataReader imageReader = imageCommand.ExecuteReader(); 

     string imageFilename = (string)imageReader.GetValue(0); 
     byte[] imageBytes = (byte[])imageReader.GetValue(1); 
     MemoryStream ms = new MemoryStream(imageBytes); 
+1

Weisen Sie den Memorystream an die Stream Eigenschaft eines Bitmap. Weisen Sie BitmapImage dann der Source-Eigenschaft eines Image-Elements in Ihrer Benutzeroberfläche zu. – Clemens

Antwort

1

Unter der Annahme, dass Sie Bindungen verwenden, um Ihre Daten in Ihrer Benutzeroberfläche angezeigt werden und somit unter Verwendung von Viewmodels, würde ich vorschlagen, eine Imagesource verwendet.

Um eine Imagesource von einem Byte-Array initialisieren ich die folgende Methode geschrieben:

public ImageSource LoadImageSourceFromBytes(byte[] imageBytes) 
{ 
    BitmapImage bitmapImage = new BitmapImage(); 

    using (MemoryStream imageStream = new MemoryStream(imageBytes)) 
    { 
     bitmapImage.BeginInit(); 
     bitmapImage.StreamSource = imageStream; 
     bitmapImage.CacheOption = BitmapCacheOption.OnLoad; 
     bitmapImage.EndInit(); 
    } 

    bitmapImage.Freeze(); 

    return bitmapImage; 
} 
+0

Kannst du mehr erklären, wo soll ich es schreiben? Ich habe diese Funktion hinzugefügt, aber ich weiß immer noch nicht, wie man die Fotos in der Bildkontrolle anzeigt? – zahra

+0

Die App wird mit WPF – zahra

+0

erstellt Verwenden Sie das MVVM-Muster in Ihrer Anwendung? In diesem Fall müssen Sie die Eigenschaft in Ihr ViewModel einfügen und in der Ansicht die Binding MarkupExtension verwenden, um das Bild in der Ansicht anzuzeigen. Wenn nicht, weisen Sie dem Bildsteuerelement einen x: Namen zu, und setzen Sie im Code dahinter die Quelleigenschaft dieses Steuerelements auf das Bild, das Sie von der Datenbank erhalten haben. Aber ich empfehle dringend, MVVM (und verwenden Sie es) zu sperren, wenn Sie nicht bereits sind. – Wr4thon

Verwandte Themen