IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Transferer image Picturebox vers control Image dans Usercontrol


Sujet :

VB.NET

  1. #1
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut Transferer image Picturebox vers control Image dans Usercontrol
    Bonjour,
    Tout est dans le titre
    J'ai un picturebox sur ma Form dans lequel je fait du dessin.
    Un contrôle image (system.windows.controls.image) qui se trouve sur un Usercontrol.
    Je cherche à transférer le contenu de mon picturebox dans le contrôle Image, or le contrôle Image n'as pas de propriété Image Il n'a que la propriété Source.
    Je précise que je suis sous VB 2010 et que je suis plutôt novice avec.

    Merci pour toute aide.

  2. #2
    Membre averti
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Points : 391
    Points
    391
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Image = PictureBox1.Image.Clone()
    ça me paraît trop simple...

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par avigeilpro Voir le message
    ...
    J'ai un picturebox sur ma Form dans lequel je fait du dessin.
    Un contrôle image (system.windows.controls.image) qui se trouve sur un Usercontrol.
    Euh... tu mélanges WPF et Windows Forms, c'est exprès ? Parce que l'interop entre les 2 est quand même assez galère...

    Enfin, en admettant que ce soit vraiment ce que tu veux, pour convertir une image bitmap GDI (System.Drawing.Bitmap) en image WPF (System.Windows.Media.ImageSource), on utilise la méthode Imaging.CreateBitmapSourceFromHBitmap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim gdiImage = DirectCast(pictureBox.Image, System.Drawing.Bitmap)
    Dim  wpfImage = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( _
            gdiImage.GetHbitmap(), _
            IntPtr.Zero, _
            Int32Rect.Empty, _
            BitmapSizeOptions.FromEmptyOptions())
    image.Source = wpfImage

  4. #4
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Merci infiniment, en effet il s'agit d'un WPF (cela ne fait qu'un petit jour que je suis sur VB.net 2010 donc je pense encore comme VB6 )

    Merci encore Tomlev, ta solution marche nickel.

  5. #5
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Zut, j'ai parlé trop vite.

    Je m'explique :
    Ce petit bout de code est entré dans un Timer, qui rafraichi très très régulièrement le WPF (0.05s) or au bout d'un moment j'ai un arret sur Dim wpfImagee = .... avec comme message :
    OutOfMemoryException was unhandled.
    Mémoire insuffisante.
    De plus dans les performances de mon ordinateur, je remarque une très nette montée de l'utilisation du fichier d'échange (environs 1.3 Go )


  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    0.05 secondes ça fait un peu court quand même... tu as vraiment besoin que ce soit si rapide ? Au pire, tu pourrais peut-être conserver l'image WPF convertie tant que l'image GDI n'a pas changé...

    Sinon au départ, comment ça se fait que tu aies une image GDI ? Ce serait plus simple si tu pouvais éviter l'interop entre WPF et WinForms... Tu peux pas charger directement une image WPF ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BitmapImage wpfImage = new BitmapImage(new Uri(fileName));
    Ou alors tu fais tout en WinForms... mais peut-être as-tu besoin de fonctionnalités spécifiques à WPF ?

  7. #7
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    En faite je pense avoir besoin des deux (sauf si on me propose mieux)
    J'ai besoin du WPF car tout ce que je met dans le wpf apparait sur l'écran d'un clavier G19 (via des dll qui ne sont pas de ma conception), la dll n'accepte que un System.Windows.FrameworkElement .
    Or je ne fait pas que d'afficher des fichier images, il y a des graphique dynamiques ... D'ou l'utilisation d'un PictureBox : je dessine dans mon Picturebox puis je transfère le résultat dans mon WPF qui sort sur mon écran.
    Pour le moment je peux augmenter le temps de rafraichissement (n'en étant qu'a mes début du développement je n'affiche que l'heure) mais il se peux (très fortement) que j'ai besoin d'un rafraichissement bien plus rapide plus tard.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Bah tu peux dessiner directement en WPF... c'est (un peu) plus difficile qu'avec GDI, mais c'est pas fondamentalement différent il me semble. De toutes façons, même si tu veux utiliser GDI, tu n'as pas besoin d'une PictureBox pour dessiner, tu peux le faire directement sur un Bitmap en mémoire.

Discussions similaires

  1. Changer l'image d'un control Image avec un stream
    Par Takumi dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/11/2009, 00h31
  2. inserer un lien vers une image dans une news
    Par jerrypeeren dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/07/2008, 22h51
  3. Dimension d'un control Image contenu dans une Frame
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 08/07/2006, 15h55
  4. [VBA-E] coller contenu Presse-papiers dans controle Image
    Par mr63 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/03/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo