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 :

regler un probleme avec mon code


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    29
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Par d�faut regler un probleme avec mon code
    salut tout le monde
    mon probleme se pose dans l'affichage de mon histogramme a partir d'une image bitm�p voila ce que j'ai coder :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unitramzi.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormClick(TObject *Sender)
    {
    OpenPictureDialog1->Execute();
    Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
    Image1->Height=Image1->Picture->Height;
    Image1->Width=Image1->Picture->Width;
     
    }
    //---------------------------------------------------------------------------
     
      void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Canvas->Rectangle(300,50,600,300);
    Canvas->Pen->Color=clBlue;
    Canvas->MoveTo(320,75);
    Canvas->LineTo(320,300) ;
    Canvas->MoveTo(320,200);
    Canvas->LineTo(450,200);
    int histo[266];
    int i,j;
    for(i=0;i<266;i++)
    histo[i]=0;
    for(i=48;i<Image1->Width+1024;i++)
     for(j=8;j<Image1->Height+1024;j++)
    histo[Canvas->Pixels[i][j]]++;
    for(i=0;i<266;i++)
    Canvas->Pen->Color=clBlack;
    Canvas->MoveTo(i+320,100);
    Canvas->LineTo(i+320,histo[i]+100);
     
    }
    mais j'ai rien al'execution donc je vous demande de jetez un coup d'oeil sur ce code et me corriger si c'est possible

  2. #2
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Salut kachaloarmin
    Je pense que ton probleme vient du fait que tu n'a pas encadre ton code par les accolades dans tes boucles
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(i=0;i<266;i++)
    {
    ... Le code qui doit etre execute
    }
    for(i=48;i<Image1->Width+1024;i++)
    {
    ... Le second code qui doit etre execute
    }

  3. #3
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Il faudrait savoir si le bitmap est un 8 ou 24 bits.
    Savoir �galement si ce bitmap est en couleurs ou en niveaux de gris.

    Il est clair qu'on va avoir un gros probl�me de d�bordement dans ton code, avec l'index du tableau !
    Pour un noir, Pixels va renvoyer 0x000000 mais pour un blanc on a 0xFFFFFF.
    donc attention :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    histo[ Canvas->Pixels[i][j] ]++;
    Si le bitmap est un 8 bits, il suffit d'utiliser ScanLine pour r�cup�rer l'index de la couleur qui sera aussi celui de l'histo.

    Si maintenant on a un 24 bits, on a deux possibilit�s, soit il s'agit d'un bitmap en niveaux de gris soit c'est de la couleur � profusion !
    Pour un bitmap � niveau de gris, on sait que les composantes (RGB) sont �gales donc il suffit de r�cup�rer l'une ou l'autre et on se retrouve � g�rer comme dans le cas d'un bitmap 8 bits, � la diff�rence pr�s que l'on acc�de � une entit� 24 bits, compos�e donc de 3 octets cons�cutifs pour les RGB.
    J'ai donn� du code allant dans ce sens, sur ce forum !

    Si on a par contre un bitmap 24 bits couleurs... je pense qu'on est oblig� de raisonner autrement.
    On peut �ventuellement forcer une conversion en 8 bits.
    Sinon, faire l'histogramme en R,G et B. ou utiliser d'autres formules... � ce stade je ne suis pas sp�cialiste !

    A plus !

Discussions similaires

  1. [D�butant] Probleme avec mon code ou mon ftp?
    Par bananekiller dans le forum VB.NET
    R�ponses: 0
    Dernier message: 12/06/2012, 21h12
  2. [AJAX] Code ajax
    Par christa_k dans le forum AJAX
    R�ponses: 2
    Dernier message: 23/09/2009, 09h32
  3. Probleme avec mon code : Comment changer de JPanel
    Par serialkilled dans le forum AWT/Swing
    R�ponses: 1
    Dernier message: 17/12/2006, 10h13
  4. [Tableaux] probleme avec mon code pour faire un parseur !
    Par Joe-La-Boule dans le forum Langage
    R�ponses: 10
    Dernier message: 11/10/2006, 15h35
  5. Problème avec mon code et avec gcc
    Par JavaAcro dans le forum Linux
    R�ponses: 3
    Dernier message: 13/06/2006, 22h47

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