cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 2006
-
28 juil. 2005 à 15:24
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 2006
-
11 août 2005 à 19:58
et vu que je programme tout seul dans mon coin et qu' il n' ya aucune info sur les spectres, je voudrai savoir si qqun peut me filer un coup de main a dessinner un beau spectrum à la place de la ligne verte minable de base -):
le code à ameliorer :
void Mp3PlayerFrm::DessineSpectre(wxDC& dc)
{
//dessin du spectre.....
spectrumData = FSOUND_DSP_GetSpectrum(); //recupere les 512 cannaux separés...
dc.BeginDrawing();
wxColour MaCouleurVerte(0,255,0);
wxPen MonCrayonVert(MaCouleurVerte,8,wxSWISS);
dc.SetPen(MonCrayonVert);
for ( int i = 0 ; i < 400 ; i++ )
{
spectrumValue = int (1000 * (spectrumData[ i ] + spectrumData[ i +1 ] + spectrumData[ i+2 ] + spectrumData[ i+3 ] + spectrumData[ i+4 ] )) / 5;
if (spectrumValue >= 200) //si spectrum value depasse de spectrWnd..
spectrumValue = 199; //recadre
dc.DrawPoint( i , 198-spectrumValue ); //dessine
}
dc.EndDrawing();
}
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 31 juil. 2005 à 11:21
ben en fait je n' y arrive pas a l'adapter a wx
et je ne comprends pas bien le systus ...
biensur que ca me plaierai ton dégradé d'ailleurs c'est ce que j'essaye de faire depuis une semaine mais che bloke.
(j' ai aussi un souci pour récupérer les tags mais ca c une otre histoire)
si ca t'dit de m' donner un coup de main en live
[mailto:satellitesound@msn.com satellitesound@msn.com]
thx ++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 31 juil. 2005 à 11:31
ô sinon si ca te dérange pas trop ce serai cool de m' expliquer pas a pas les actions qu' il faut faire , meme sans code , juste pour connaitre exactement la marche a suivre apré je me démmerderai a trouver comment faire avec wx
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 31 juil. 2005 à 22:57
donc, maintenant j' ai :
void Mp3PlayerFrm::DessineSpectre(wxDC& dc)
{
//dessin du spectre.....dédié a Snoops de cppcs
const float *spectrumData = FSOUND_DSP_GetSpectrum(); //recupere les 512 cannaux separés...
int spectrumValue;
COLORREF m_degrade =(10,250,10);
int fRed = (int)GetRValue(m_degrade);
int fBlue = (int)GetBValue(m_degrade);
int fGreen = (int)GetGValue(m_degrade);
for ( int i = 0 ; i < 400 ; i++ ) //400 est le largeur de la fenetre:
//le spectrum retourne 512 floats
//mais pour garder tout le spectre dans la fenetre je defini a 400
{
spectrumValue = int (1000 * (spectrumData[ i ] + spectrumData[ i +1 ] + spectrumData[ i+2 ] + spectrumData[ i+3 ] + spectrumData[ i+4 ] )) / 5;
if (spectrumValue >= 200) //si spectrum value depasse de spectrWnd..
spectrumValue = 199; //recadre
int deca = 200; // taille max de la ligne
for ( int j = 199 ; j < spectrumValue ; j-- )
{
if (fRed) fRed -= 128 / deca;
if (fBlue) fBlue -= 128 / deca;
if (fGreen) fGreen -= 128 / deca;
wxColour MaCouleur(fRed, fGreen , fBlue);
wxPen MonCrayon(MaCouleur,8,wxSWISS); //crée un "crayon",
dc.SetPen(MonCrayon); //ce crayon est accroché au device context grace a SetPen
dc.DrawPoint( i , j ); //dessine
}//ferme la tite boucle
}//ferme la gde boucle
}//ferme la fonction
et avec ca j' ai une erreur de compilo =
46 C:\Documents and Settings\Administrateur\Bureau\PlayerMp3\spectrum.cpp [Warning] left-hand operand of comma has no effect
46 C:\Documents and Settings\Administrateur\Bureau\PlayerMp3\spectrum.cpp [Warning] right-hand operand of comma has no effect
je comprends pas pourquoi.
Donc, ca compile avec ces erreurs et ca n'affiche rien.
Une soluce????????
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 1 août 2005 à 19:29
oué alor la j'a i rien compris!
tu peux préciser?? j' ai 0 erreurs de compile avec ca mais ca n'affiche tjrs rien
void Mp3PlayerFrm::DessineSpectre(wxDC& dc)
{
//dessin du spectre.....dédié a Snoops de cppcs
COLORREF m_degrade = 255;//Valeur du dégradé
int fRed = (int)GetRValue(m_degrade);
int fBlue = (int)GetBValue(m_degrade);
int fGreen = (int)GetGValue(m_degrade);
const float *spectrumData = FSOUND_DSP_GetSpectrum(); //recupere les 512 cannaux separés...
int spectrumValue;
wxColour MaCouleur(fRed, fBlue , fGreen); //creer la couleur que va prendre le crayon,
wxPen MonCrayon(MaCouleur,8,wxSWISS); //crée un "crayon",
dc.SetPen(MonCrayon); //ce crayon est accroché au device context grace a SetPen,
for (int i = 0 ; i < 400 ; i++ ) //400 est le largeur de la fenetre:
//le spectrum retourne 512 floats
//mais pour garder tout le spectre dans la fenetre je defini a 400
{
spectrumValue = int (100 * (spectrumData[ i ] + spectrumData[ i +1 ] + spectrumData[ i+2 ] + spectrumData[ i+3 ] + spectrumData[ i+4 ] )) / 5;
if (spectrumValue >= 200) //si spectrum value depasse de spectrWnd..
spectrumValue = 199; //recadre
int deca = 200; // taille max de la ligne
for (int j = 200 ; j < spectrumValue ; j-- )
{
if (fRed) fRed -= 128 / deca;
if (fBlue) fBlue -= 128 / deca;
if (fGreen) fGreen -= 128 / deca;
dc.DrawPoint(i, j); //dessine .
}//ferme la tite boucle
}//ferme la gde boucle
}//ferme la fonction
si je met la valeur en hexa a colorref, il me fait une erreur.
et j'ai pas trouver comment envoyer les bits avec wxWIDGETS!
'tain je crois bien que je vais me mettre au win32 car ca va pas du tout ca
j'en ai marre!lol!
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 1 août 2005 à 21:24
ben je connais pas
wxColour MaCouleur(fRed, fBlue ,
fGreen); //creer
la couleur que va prendre le crayon,
mais si wxColour MaCouleur(255, 0 , 0); sert a ecrire en rouge c'est la
bonne commande sinon il t en faut une autre et ca marche pas en hexa
c'etait pour expliquer ou il faut utliser un code special.
en win32 il faut detruire le stylo a chaque fois avant d 'en recreer un sinon fuite de memoire !!!
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 2 août 2005 à 15:34
bon, salut!
j' arrive enfin a évoluer : maintenant j'ai un spectre de la forme que je souhaitée c a d "plein".
voili le code :
void Mp3PlayerFrm::DessineSpectre(wxDC& dc)
{
//dessin du spectre.....dédié a Snoops de cppcs
wxColour MaCouleur(0, 255 , 100); //creer la couleur que va prendre le crayon,
int red = MaCouleur.Red();
int green = MaCouleur.Green();
int blue = MaCouleur.Blue();
const float *spectrumData = FSOUND_DSP_GetSpectrum(); //recupere les 512 cannaux separés...
int spectrumValue;
for (int i = 0 ; i < 400 ; i++ ) //400 est le largeur de la fenetre:
//le spectrum retourne 512 floats
//mais pour garder tout le spectre dans la fenetre je defini a 400
{
spectrumValue = int (500* (spectrumData[ i ] + spectrumData[ i +1 ] + spectrumData[ i+2 ] + spectrumData[ i+3 ] + spectrumData[ i+4 ] )) / 5;
if (spectrumValue >= 200) //si spectrum value depasse de spectrWnd..
spectrumValue = 199; //recadre
int h = 200;
for (int j = 0 ; j < spectrumValue ; j++)
{
if (red) red -= 128/h;
if (green) green -= 128/h;
if (blue) blue -= 128/h;
wxColour macouleurmod(red, green, blue);
wxPen MonCrayon(macouleurmod,8,wxSWISS); //crée un "crayon",
dc.SetPen(MonCrayon); //ce crayon est accroché au device context grace a SetPen,
par contre tout ce qui se rapporte au changement de couleur en fonction de la hauteur ne fonctionne pas.Franchement je comprends pas pkoi vu ke je recupere un valeur de dégradé avec
wxColour MaCouleur(0, 255 , 100);
int red = MaCouleur.Red();
int green = MaCouleur.Green();
int blue = MaCouleur.Blue();
et que je la traite en suite
if (red) red -= 128/h;
if (green) green -= 128/h;
if (blue) blue -= 128/h;
et pour finir, je la fait passer ds mon crayon avec
wxColour macouleurmod(red, green, blue);
wxPen MonCrayon(macouleurmod,8,wxSWISS); //crée un "crayon",
dc.SetPen(MonCrayon);
ca compile com' du beurre mais pas de changement de couleur.
allé en tous cas merci bocoup.
t' aurai pas une idée de comment faire du "set bit to device" avec wxWIDGETS?
Personellement je m'en sert dans un programme qui utilise aussi
wxWindows, donc je peut t'assurer qu'il n'y a pas de problemes de ce
cote (en plus les deux sont cross-plateform ).