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 :

[VB.Net 2.0] Comment Superposer/fusionner images ?


Sujet :

VB.NET

  1. #1
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut [VB.Net 2.0] Comment Superposer/fusionner images ?
    Bonjour,

    J'aimerais supperposer deux objets System.Drawing.Image.
    Le but est de "poser" au premier plan dans le coin haut gauche d'une image, une autre image de plus petite taille (gérant éventuellement la transparence).

    Le tout de manière à obtenir une seule image que je pourrais insérer dans un ImageList.


    Quelles sont les objets & méthodes que je peux utiliser ?

    Si vous avez carrément du code, je prends aussi !

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Ce que je souhaite faire s'appelle du "Compositing".

    La réponse dotNet est ici : http://www.dotnet-tech.com/tutoriels...ModeUnsafe.pdf

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Pour la superposition visuelle ce n'est pas très compliquée, mais j'ai plutôt répondu à ce type de questions dans le forum Application Windows car si je me souviens bien il s'agissait en fait d'implémenter un "système de calques" donc la piste est tout simplement une imbrication de contrôles Panel en prenant bien soin d'ajouter le nouveau calque/Panel à la collection Controls du calque/Panel précédent : en gros tu peux implémenter un UserControl qui gère sa collection de panels (celui de base ainsi que ceux au BackGroundColor = Color.Transparent).
    Quand à la fusion d'images, je n'ai jamais fait, je laisse les pros de ce type d'implémentation te répondre
    Cependant, je me demande si la choix d'un composant ImageList (contraignant en ce qui concerne les index) sera très pratique, comme tu es sous 2.0, je crois que tu t'arrangeras aussi bien avec un List(Of Image) non ?

    Edit:
    Arf tu viens de répondre toi-même, donc ne tiens pas compte de ma réponse, je crois que j'étais HS

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Merci quand même pour ta réponse Neguib !

    Voici le code en VB.NET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        Private Function Compositing(ByVal ImageFond As Image, ByVal
     ImageOver As Image) As Image
     
            Dim img As Image = DirectCast(ImageFond.Clone, Image)
            Dim g As Graphics = Graphics.FromImage(img)
     
            g.DrawImage(ImageOver, New Rectangle(0, 0, ImageOver.Width,
     ImageOver.Height))
     
            ImageFond.Dispose
            ImageOver.Dispose
     
            Return img
     
        End Function
    Sinon tu laisses entendre que le Listview peut se passer de l'ImageList ? Décidément que de bonnes surprises ce Framework !

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par FRED.G
    Sinon tu laisses entendre que le Listview peut se passer de l'ImageList ? Décidément que de bonnes surprises ce Framework !
    Nonnon je n'ai pas vu que tu parlais du ListView j'étais dans mon trip ComposantCalques

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Oups...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Bonjour
    j'ai essayé plusieurs codes mais j'ai vraiment du mal à faire simple et surtout, à ce que ça fonctionne

    Je souhaiterai (pour préciser) pouvoir coller l'image de ma petite picturebox1 sur l'image de ma grande picturebox2 sans aucun effet de transparence mais en étant placé en plein milieu...

    je sais pas si j'en demande beaucoup mais je dois bien avouer que je sèche...
    Merci d'avance si vous pouvez m'aiguiller
    ____________
    Edit1: Bon j'ai peut être progressé:

    MainImage.BackgroundImage = background.Image
    MainImage.SizeMode = PictureBoxSizeMode.CenterImage

    j'ai bien ma picture box avec mon image de fond et ma petite image centrée, mais en affichage uniquement.
    Il faudrait juste trouver maintenant comment sauvegarder image+background en un seul jpg.
    _____________
    edit2

    Ok donc je bloque là. tout ce qui me reste à trouver pour finir mon projet est de trouver le moyen de sauvegarder une image jpg qui regrouperait l'image de ma picturebox1 superposant le background de picturebox1

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Bon suis pas pro en code mais voilà comment j'ai pu résoudre mon problême

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim myBitmap As New Bitmap(PictureBox1.Image)
    Dim resultat As New Bitmap(PictureBox2.Image)
    Dim Horizontal As Integer, Vertical As Integer
    Dim pixcolor As Color = myBitmap.GetPixel(Horizontal, Vertical)
    Dim basehoriz As Integer = ((PictureBox2.Width / 2) - (PictureBox1.Width / 2))
    Dim basevert As Integer = ((PictureBox2.Height / 2) - (PictureBox1.Height / 2))
     
    For Horizontal = ((PictureBox2.Width / 2) - (PictureBox1.Width / 2)) To ((PictureBox2.Width / 2) + (PictureBox1.Width / 2)) - 1 
    For Vertical = ((PictureBox2.Height / 2) - (PictureBox1.Height / 2)) To ((PictureBox2.Height / 2) + (PictureBox1.Height / 2)) - 1 
     
    pixcolor = myBitmap.GetPixel(Horizontal - basehoriz, Vertical - basevert)
    resultat.SetPixel(Horizontal, Vertical, pixcolor)
     
     
    Next Vertical
    Next Horizontal
    ça place ma petite image centrée sur ma grande image, parfaitement ce qu'il me fallait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Comment superposer des images ?
    Par zetta dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/10/2006, 13h41
  2. [C++ .Net 1.1] Comment superposer des panels transparents ?
    Par juliano_bipso dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 16/08/2006, 07h38
  3. Réponses: 8
    Dernier message: 18/05/2006, 15h30
  4. Comment récupérer une image du net ?
    Par Cracking_Cow dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 01/12/2005, 21h53
  5. [.NET][CR] Comment afficher une image blob dans un état ?
    Par moucrack dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/06/2005, 13h49

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