Meilleur auteur de réponses
Insertion image en WPF (vb.net), conversion image, besoin d'aide

Question
-
Bonjour les amis,
Je suis en train de développez une application WPF, qui permettrait de faire une gestion de contact, ajouter, supprimer, ..., des contacts.
J'ai pu me documenter sur la toile, concernant la mise en place de ceci, mais je bloque sur la liaison image - base de données.
Imports System Imports System.Data Imports System.IO Imports Microsoft.Win32 Imports System.Data.SqlClient Imports System.ComponentModel Imports Microsoft.VisualBasic Imports System.Windows.Media.Animation Imports System.Windows.Navigation Imports System.Windows.Controls.Image Imports System.Windows.Media.Imaging Imports System.IO.MemoryStream Partial Public Class Window2 'Private ContactData As New ContactsDataSet 'Private taCont As New ContactsDataSetTableAdapters.ContactTBLTableAdapter 'Private taManager As New ContactsDataSetTableAdapters.TableAdapterManager 'Private View As CollectionView Dim Window1 As New Window1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click Me.Close() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click Window1.taCont.Insert(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text, Today.Date.ToShortDateString, Nothing) Window1.taCont.Fill(Window1.ContactData.ContactTBL) MsgBox("Completed") For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(Me.StackPanel2) - 1 Dim txt As TextBox = VisualTreeHelper.GetChild(Me.StackPanel2, i) If txt.Text IsNot Nothing Then txt.Text = String.Empty End If Next End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button3.Click Dim OpenFileDialog As New OpenFileDialog OpenFileDialog.FileName = Nothing OpenFileDialog.ShowDialog() Dim bmp As New BitmapImage(New Uri(OpenFileDialog.FileName().Trim)) If Not OpenFileDialog.FileName = Nothing Then Me.Image1.Source = bmp End If Dim stream As FileStream = New FileStream(OpenFileDialog.FileName, FileMode.Open, FileAccess.Read) Dim reader As BinaryReader = New BinaryReader(stream) Dim Data As Byte() = reader.ReadBytes(stream.Length) reader.Close() stream.Close() Window1.taCont.Insert(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text, Today.Date.ToShortDateString, Nothing) If Not OpenFileDialog.FileName = Nothing Then Me.Image1.Source = bmp End If End Sub End Class
Je voudrais inserer, pour chaque contact, sa photo, mais pas moyen d'effectuer cette tâche. J'ai trouver des exemples, en VB.NET, qui fonctionnent en winform, mais pas moyen de l'adapter en WPF, notamment la conversion image.source du controle image en binaire.
On me parle de converter, mais les exemples fournis sont écrire en C#, en vb.net, les messages rencontrés lors de la compilations sont diverses et variés.
Cela fait plusieurs mois que je cherche, sans succès.
Dans une base de données SQL, les images sont stockées sous format binaire. Donc pour afficher l'image dans le contrôle image de WPF, il faut effectuer une conversion.
Inversement, pour pouvoir inserer une image dans une base de données SQL, il faut convertir le format de lecture du contrôle image de WPF, en binaire (format de stockage de l'image dans la BDD SQL).
Et là, de bloque.
Les exemples de la toile, utilisent la technologie ADO.NET, avec les chaines de connections (Connectionstring), sqlcommand, cmd.parameter.Add(), ...
En vb.net, j'utilise pour inserer mes données dans le base de données : tableAdapter.insert(textbox1.text, ...), par contre je ne trouve pas l'equivalent de sqlcommand.parameter.add(), en VB.net.
Pourriez-vous m'aider à débloquer la situation.
En vous remerciant par avance.
Cordialement.
Réponses
-
Je vous remercie de votre réponse, ainsi que de vos eclairicissements.
En effet, le paramètre Data, n'était utilisé null part, merci de votre remarque. Effectivement cela résoud mon problème, en passant de paramètre Data à la place de nothing.
Merci pour toute l'aide que vous m'avez apportée.
Cordialement.
- Marqué comme réponse Kensi22 mercredi 25 avril 2012 18:06
Toutes les réponses
-
Bonjour,
Apparemment Data n'est pas utilisé ? Sinon il faudra que je fasse un petit test avec les DataSets typés auxquels je n'ai jamais vraiment accrochés.
Après examen de plus près je dirais :
- utiliser FileStream (sans encodage)
- passer le paramètre Data
et cela devrait aller. Sinon indiquer quel est le problème exact que vous avez ? (pour l'instant vous semblez passer Nothing au lieu des données binaires ?)SqlCommand.Parameters.Add est un une fonction de la bibliothèque .NET et s'utilise donc depuis VB de la même façon que depuis C# mais qu'est ce que cela viendrait faire ici avec des datasets typés, je pense qu'il y a peut-être une confusion entre des exemples qui concernent différentes façons d'accéder aux données.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Modifié Patrice ScribeMVP samedi 21 avril 2012 12:54
- Proposé comme réponse Pascal SailleModerator dimanche 22 avril 2012 17:36
-
Je vous remercie de votre réponse, ainsi que de vos eclairicissements.
En effet, le paramètre Data, n'était utilisé null part, merci de votre remarque. Effectivement cela résoud mon problème, en passant de paramètre Data à la place de nothing.
Merci pour toute l'aide que vous m'avez apportée.
Cordialement.
- Marqué comme réponse Kensi22 mercredi 25 avril 2012 18:06