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

C++Builder Discussion :

Couleurs & TBitmap [Non suivi]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 288
    Par défaut Couleurs & TBitmap
    Bonjour,

    Je cherche à affecter des couleurs aléatoires aux différents pixels d'une image et ce, pixel par pixel à travers l'instruction: ...canvas->pixels[x][y]=valeurcouleur. Je vous demande essentiellement de m'indiquer si je peux utiliser des valeurs entières pour valeurcouleur et surtout de me préciser les limites inférieure et supérieure et s'il y a un autre moyen de procéder en transformant les valeurs entières de valeurcouleur en valeurs RGB ou une autre instruction à utiliser.

    Vous remerciant d'avance.

    Medchok.

  2. #2
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    salut,
    si j'ai bien compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... -> Canvas -> Pixels[x][y] = (TColor)RGB(rand(255),rand(255),rand(255));
    voilà

    @+

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Sauf que ça, ça va ramer à mort.
    La proriétés Pixels d'un TCanvas est très lente et est donc à proscrire pour du traitement d'image.

    Il vaut mieux passer par un TBitmap et utiliser la propriété Scanline.

    Un code ci-dessous devrait bien fonctionner :
    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
     
    Graphics::TBitmap *bmp = new Graphics::TBitmap();
    bmp->PixelFormat = pf24bits;
    bmp->Width = ....;  // Mettre la taille voulue
    bmp->Height =....;
    RGBTRIPLE *line;
     
    for ( int y = 0; y < ....; ++y )
    {
       line = (RGBTRIPLE) bmp->ScanLine[y];
       for ( int x = 0; x < ...; ++x )
       {
          line[x].rgbtRed = rand(255);  // Composante rouge
          line[x].rgbtGreen = rand(255);  // Composante verte
          line[x].rgbtBlue = rand(255); // Composante bleue
        }
    }
     
    // Plus qu'à dessiner le bmp sur le composant voulu....
    En espérant avoir été utile !

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Il vaut mieux faire un seul random :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int color = radom(0xFFFFFF);
    ..blue = (Byte)color; color = color / 256;
    ..green = (Byte)color; color = color / 256;
    ..red = (Byte)color;
    (à noter que lors de la compilation, BCB peut passer outre la division ou le shift à droite
    en procédant directement par octets...)

    ou bien utiliser directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ..->Pixels[x][y] = (TColor)random(0xFFFFFF);
    Au besoin, inclure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <stdlib.h> //pour radom
    A plus !

Discussions similaires

  1. Couleur de transparence Tbitmap
    Par curt25 dans le forum Composants FMX
    Réponses: 17
    Dernier message: 19/07/2012, 13h48
  2. problème couleur TBitmap
    Par gudul dans le forum Composants VCL
    Réponses: 12
    Dernier message: 08/02/2011, 22h02
  3. [TBitmap] Recuperer la couleur d un pixel
    Par DamessS dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/12/2004, 08h47

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