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 :

Capture imprécise de couleur avec GetPixel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Par défaut Capture imprécise de couleur avec GetPixel
    Bonjour,
    Je m’amuse à écrire une éphéméride valable pour tous les pays du monde et je voudrais affecter le fuseau horaire grâce à une carte des fuseaux horaires récupérée sur le net, cliquable dans un PictureBox.
    Cette carte montre des zones colorées avec des séries de 4 couleurs pour la mer + 4 couleurs plus soutenues pour les continents.
    Si les fuseaux étaient limités par les méridiens, ce serait facile grâce à l’abscisse X du curseur, mais les zones horaires suivent très souvent les frontières des états en mordant joyeusement sur les méridiens de référence.
    Il faut donc que je récupère aussi la couleur située sous le curseur et que j’en déduise la zone de décalage horaire du pays.
    Oui mais voilà en cliquant à plusieurs endroits sur une même zone colorée, la fonction getPixel ne me renvoie pas toujours la même couleur, ce qui est assez illogique, alors qu’en testant la même image avec un logiciel de dessin, la pipette me donne partout exactement les mêmes composantes RGB pour les zones de même couleur, ce qui est bien plus logique.
    Comment faire pour obtenir la même précision avec VB Net ?
    D'avance merci.
    Et bonne journée à tous.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Cela pourrait venir du fait d'un affichage de dimensions différentes de l'image contenu du fichier (redimensionnement).
    Une solution envisageable, dans ton logiciel préféré, dimensionner l'image comme tu veux quelle apparaisse dans ton programme et/ou diminuer le nombre de couleur et l'enregistrer en .BMP.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Problème de redimensionnement approprie de l'image ,qui doit s'ajuster sur coutures au pic box car les coords x,y sont relatives au pic box en SizeMode=Normal
    code 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
    17
    18
     
    Public Class Form1
        Private wordldtmz As Bitmap
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            'adjuster les props du pic box
            PictureBox1.Size = New Size(800, 400)
            PictureBox1.SizeMode = PictureBoxSizeMode.Normal
     
            wordldtmz = New Bitmap(My.Resources.worldtimezonemap, Me.PictureBox1.Width, Me.PictureBox1.Height)
            PictureBox1.Image = wordldtmz
     
     
        End Sub
     
        Private Sub PictureBox1_MouseClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
            Label1.BackColor = wordldtmz.GetPixel(e.X, e.Y)
        End Sub
    End Class
    Bon code...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Par défaut Capture imprécise de couleur avec GetPixel (résolu)
    Merci pour vos réponses qui m'ont mis sur la piste.
    J'avais adapté l'image à la taille de ma PictureBox sans conserver les proportions exactes et en plus, je travaillais sur une image png.
    Conclusion : sans chercher à savoir lequel me causait les erreurs, j'ai retouché ces deux paramètres :
    1- j'ai redimensionné à la largeur définitive dans mon logiciel de dessin en gardant les proportions.
    2- J'ai sauvegardé en .bmp
    J'ai ensuite ajusté le container PictureBox à l'image et non l'inverse.
    Et Youpi ! plus aucun résultat incohérent.
    Si je clique n'importe où sur une couleur, le pixel a toujours les mêmes composantes RGB. Je peux donc identifier mes 24 fuseaux horaires en m'aidant à la fois des couleurs et des coordonnées de la souris.
    Merci encore.

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

Discussions similaires

  1. Capture de fronts montants avec un PIC16F876
    Par sylvain42 dans le forum C
    Réponses: 3
    Dernier message: 12/06/2006, 14h48
  2. Réponses: 2
    Dernier message: 26/04/2006, 21h34
  3. comment mettre de la couleur avec format/write ?
    Par gedeon555 dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2006, 09h12
  4. Réponses: 4
    Dernier message: 30/05/2005, 10h29
  5. pb couleur avec Scanline
    Par bobymaw dans le forum C++Builder
    Réponses: 6
    Dernier message: 10/05/2004, 22h25

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