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 :

Copier une portion d'une image


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Qualité Logiciel
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut Copier une portion d'une image
    Bonjour à tous,

    J'ai récupéré un bout de code sur le net qui permet de copier un bout d'image.
    Le soucis c'est que dans mon cas, je veux récupérer des portions de 32 x 32 mais je récupère un bout d'image en 42 x 42.

    Voici se que j'ai fait quand on clique sur l'image d'origine (qui est dans une Picturebox).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub PICBOX_TILES_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PICBOX_TILES.MouseDown
     
            ' Mettre en mémoire le bout de tiles sélectionné
            _TilesUtilise = RecupererImage(Me.PICBOX_TILES.Image, New Rectangle(Int(e.X / 32) * 32, Int(e.Y / 32) * 32, 32, 32))
            Me.PictureBox1.Image = _TilesUtilise
     
        End Sub
    Voici la fonction RecupererImage (c'est ce que j'ai récupéré sur le net)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function RecupererImage(ByVal ImgSource As Image, ByVal Rect As Rectangle) As System.Drawing.Image
     
            'cette sub permet de récupérer une portion d'un bitmap sans le prendre dans son intégralité
            Dim ImgOut As System.Drawing.Image = New System.Drawing.Bitmap(Rect.Width, Rect.Height)
            Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(ImgOut)
            Graphics.DrawImage(ImgSource, 0, 0, Rect, System.Drawing.GraphicsUnit.Pixel)
            Return ImgOut
     
        End Function
    Donc j'ai mis le résultat dans une PictureBox (PictureBox1) pour tester et comme je vous les dit, il récupère bien la portion de l'image que je lui demande, mais au format 42 x 42 (donc l'image est "grossi")

    Savez-vous pourquoi j'ai ce phénomène ??

    Je vous remercie d'avance.
    Bonne journée.

    Cryo

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    la fonction que tu as retourne bien une image de 32x32

    si tu la mets dans un control qui a imagelayout à stretch ou zoom, c'est le control qui agrandit l'image pour qu'elle prenne la place disponible

    pour éviter de remplir la mémoire pour rien il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(ImgOut)
        Graphics.DrawImage(ImgSource, 0, 0, Rect, System.Drawing.GraphicsUnit.Pixel)
        Return ImgOut
    end using
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Qualité Logiciel
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Par défaut
    Je te remercie pour ta réponse Pol63.

    Mon objet Picturebox1 a la propriété SizeMode à Normal, donc ça c'est bon.

    Voici un screen de l'appli :



    J'ai sélectionné à gauche le tronc (entouré en rouge), puis à droite j'ai la Picturebox1 pour voir se que ça donne.

    Dans la partie sélection, l'encadré en rouge correspond à un carré de 32 x 32 et la picturebox à droite à une dimension de 32 x 32.

    On peut voir qu'à droite le tronc est zoomé.
    Si j'agrandis la picturebox1, l'image est bien en 32 x 32 mais coupé.

    Je suis dessus depuis hier soir et je n'arrive pas à comprendre pourquoi

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    tu es passé en pas à pas pour voir le rectangle que tu envoies et la taille du bitmap créé ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    ça doit être un problème de résolution.
    J'ai testé avec 72 ppp, on a ce problème.
    En passant l'original à 96, plus de soucis.
    la résolution du picturebox étant 96.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    ok je vois

    dans ce cas sur le new du bitmap, je crois qu'on spécifier les ppp qu'on veut
    et dans ce cas si tu mets la valeur de l'image source ca devrait corriger le problème
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/01/2015, 16h10
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50
  5. Réponses: 2
    Dernier message: 02/06/2006, 11h26

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