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

Lazarus Pascal Discussion :

Coordonnées de pixels d'une couleur définie [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Coordonnées de pixels d'une couleur définie
    Bonjour à tous,

    Après quelques heures de recherche, je n'ai toujours pas trouvé la réponse à ma question.

    Je suis en train de concevoir un programme où on tire une bille et celle-ci doit rebondir sur le sol. J'ai réussi cette étape avec un sol plat. C'est à dire que j'ai créé une procédure qui lorsque la bille est à l'ordonné y=2 par exemple fait rebondir la bille (inversement de la composante sur y de sa vitesse).

    Maintenant, je voudrais faire la même chose mais avec un sol aléatoire. Un peu avec des vaguelettes. Pour cela, je me suis dit qu'il faudrait dessiner le sol d'une certaine couleur et de créer une procedure qui stocke tous les pixels d'une certaine couleur dans un tableau et qui donnerait ainsi les coordonnées de chaque pixels du sol.

    Lors de mes recherches, j'ai vu qu'il y avait la fonction Scanline. Simplement, elle ne peut être utilisée que sous Delphi. De plus, je ne veux pas utiliser de bibliothèque extérieur du genre BRGBitmap.

    http://www.developpez.net/forums/d11...tmap-scanline/ sur cette discussion, on peut voir qu'on peut utiliser TBitmap.RawImage.Data.

    Simplement je n'arrive pas à l'utiliser. Est-ce qu'on peut m'aider à écrire la procédure qui stocke les coordonnées de pixels d'une couleur définit.

    J'avais trouvé une source sous Delphi que j'ai essayé de modifier pour s'approcher de ce que je veux. Ici la couleur est 255 0 255.

    Merci à tous

    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
    19
    20
    21
    22
    Procedure CSol.Analyse;
    var
    x, y : integer;   // colonnes, lignes
    Row : Prgbarray;  // pointeur scanline
    R,G,B : integer;  // les 3 couleurs
     
    begin
      For y := 0 to fImage.height-1 do   // attention au -1
      begin
        row := fImage.scanline[y];      // scanline
        for x := 0 to fImage.width-1 do // attention au -1
        begin
          R := Row[x].rgbTred ;
          G := Row[x].rgbTgreen;
          B := Row[x].rgbTblue ;
          {if R = 255 and G = 0 and B = 255 then
          row[x].rgbtred := R;
          row[x].rgbtgreen := G;
          row[x].rgbtblue := B;}
        end;
      end;
    end;

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Petite erreur de manipulation de ma part. La discussion n'est pas résolue.
    Il faut que :

    "fImage.Canvas.Pixels[i,j] = clFuchsia" renvoie false pour les bons pixels. Cependant, elle renvoie toujours False.

    fImage.Canvas.Pixels[i,j] est censé renvoyer la couleur du pixel i,j..

    Quelqu'un pourrait m'aider? Merci beaucoup

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Bien sûr, tu as vérifié que i et j ne sont pas inversés, et que fimage s'affiche bien ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je ne pense pas m'être trompé sur i et j.
    Je pense qu'il y a une difficulté sur la compression du format Bitmap.

    En fait ce n'est pas un TImage mais un TBitmap. Après j'ai essayé de le passer en TImage, mais toujours le même problème..

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    regarde la valeur de "fImage.Canvas.Pixels[i,j]" pour i et j pointant sur un pixel dont tu sais qu'il est fuchsia, et regarde ce que tu obtiens avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ShowMessage(IntToHex(fImage.Canvas.Pixels[i,j], 8)+'/'+IntToHex(clFuchsia,8));
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    quel est le format du BitMap ? pf24Bit ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je regarde ça ce soir. Merci de vos réponses.
    Mon image est en 24 bits mais je ne l'ai pas précisé dans le programme..

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Après un test très rapide, j'ai colorié le premier pixel en fushcia et il le voit en blanc..
    Je ferai plus de test ce soir.

    Merci en tout cas, le showmessage va beaucoup m'aider.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ca avance, j'ai pu découvrir une couleur qui correspond bien au fuchsia. Il ne devrait plus y avoir de problème pour que la condition soit true.
    J'essaie ça ce soir.

    Merci

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    c'est résolu, merci. Il n'y avait aucun problème depuis le début en fait, simplement une mauvaise écriture du code.

    TBitmap.Canvas.Pixels[i,j] renvoit bien la couleur du pixel.

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

Discussions similaires

  1. [PHP 5.4] Générer un gradient depuis une couleur définie
    Par Gecko dans le forum Langage
    Réponses: 1
    Dernier message: 24/03/2014, 12h07
  2. [CSS 3] Avoir une couleur définie en variable ?
    Par narvik dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 06/11/2013, 14h08
  3. Obtenir la couleur d'un pixel d'une PictureBox
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 30/06/2006, 22h17
  4. [C#] Coordonnées de pixel d'une picturebox
    Par AlexandreP dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/06/2006, 22h15
  5. Réponses: 1
    Dernier message: 26/03/2005, 12h31

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