#1 Le 28/02/2017, à 16:53
- blackAllSun
petit souci d'affichage couleur
bonjour tout le monde j'ai un souci de context dans cairo, je voudrais afficher 3 lignes brisés avec 3 couleurs differentes et je sais pas pourquoi mais la couleur de ma derniere ligne s'affiche comme fonds d'ecrans cad en vert :
ps : c'est pour un logiciel d'eco de combinaison productive et c'est du C++
<Code>
bool AreaProduction::on_draw(const Cairo::RefPtr<Cairo::Context>& cr){
Gtk::Allocation allocation = get_allocation();
const int width = allocation.get_width();
const int height = allocation.get_height();
cout<<"<"<<width<<","<<height<<">"<<endl;
//ligne bleu
draw_ligne(cr,0,0,1,0,listProduct[0]->combinaisonCoutTravail(0,0),100,listProduct[1]->combinaisonCoutTravail(0,0));
draw_ligne(cr,0,0,1,100,listProduct[1]->combinaisonCoutTravail(0,0),200,listProduct[2]->combinaisonCoutTravail(0,0));
draw_ligne(cr,0,0,1,200,listProduct[2]->combinaisonCoutTravail(0,0),300,listProduct[3]->combinaisonCoutTravail(0,0));
draw_ligne(cr,0,0,1,300,listProduct[3]->combinaisonCoutTravail(0,0),400,listProduct[4]->combinaisonCoutTravail(0,0));
//ligne rouge
draw_ligne(cr,0.8, 0.0, 0.0,0,listProduct[0]->combinaisonCoutTravail(1,1),100,listProduct[1]->combinaisonCoutTravail(1,1));
draw_ligne(cr,0.8, 0.0, 0.0,100,listProduct[1]->combinaisonCoutTravail(1,1),200,listProduct[2]->combinaisonCoutTravail(1,1));
draw_ligne(cr,0.8, 0.0, 0.0,200,listProduct[2]->combinaisonCoutTravail(1,1),300,listProduct[3]->combinaisonCoutTravail(1,1));
draw_ligne(cr,0.8, 0.0, 0.0,300,listProduct[3]->combinaisonCoutTravail(1,1),400,listProduct[4]->combinaisonCoutTravail(1,1));
//jaune pipi
draw_ligne(cr,0.8, 0.75, 0.0,0,listProduct[0]->combinaisonCoutTravail(2,2),100,listProduct[1]->combinaisonCoutTravail(2,2));
draw_ligne(cr,0.8, 0.75, 0.0,100,listProduct[1]->combinaisonCoutTravail(2,2),200,listProduct[2]->combinaisonCoutTravail(2,2));
draw_ligne(cr,0.8, 0.75, 0.0,200,listProduct[2]->combinaisonCoutTravail(2,2),300,listProduct[3]->combinaisonCoutTravail(2,2));
draw_ligne(cr,0.8, 0.75, 0.0,300,listProduct[3]->combinaisonCoutTravail(2,2),400,listProduct[4]->combinaisonCoutTravail(2,2));
//vert foncé
//grille vertical
draw_ligne_grid(cr, 0.5,0.5,0.4, 100, 0,100,height);
draw_ligne_grid(cr, 0.5,0.5,0.4, 200, 0,200,height);
draw_ligne_grid(cr, 0.5,0.5,0.4, 300, 0,300,height);
draw_ligne_grid(cr, 0.5,0.5,0.4, 400, 0,400,height);
//grille horizontal
draw_ligne_grid(cr, 0.5,0.5,0.4, -width, 100,width,100);
draw_ligne_grid(cr, 0.5,0.5,0.4,-width, 200,width,200);
draw_ligne_grid(cr, 0.5,0.5,0.4, -width, 300,width,300);
draw_ligne_grid(cr, 0.5,0.5,0.4, -width, 400,width,400);
cr->stroke();
return true;}
void AreaProduction::draw_ligne(const Cairo::RefPtr<Cairo::Context>& cr,
double rgbred,double rgbgreen,double regbblue,
double debX,double debY,double finX,double finY){
//echelle
finY=finY/100000.0;debY=debY/100000;
cr->save();
cr->set_line_width(5.0);
cr->set_line_cap(Cairo::LINE_CAP_ROUND);
cr->set_source_rgb(rgbred, rgbgreen, regbblue);
cr->move_to(debX,debY);
cr->line_to(finX, finY);
cout<<"Product : "<<cr
<<" COLOR : <"<<rgbred<<","<<rgbgreen<<","<<regbblue
<<"> : Coord DEB <"<<debX<<","<<debY<<">"
<<" : Coord FIN <"<<finX<<","<<finY<<">"<<endl;
cr->paint();
cr->fill_preserve();
cr->restore();}
void AreaProduction::draw_ligne_grid(const Cairo::RefPtr<Cairo::Context>& cr,
double rgbred,double rgbgreen,double regbblue,
double debX,double debY,double finX,double finY){
//echelle
cr->save();
cr->set_source_rgb(rgbred, rgbgreen, regbblue);
cr->set_line_width(5.0);
cr->set_line_cap(Cairo::LINE_CAP_ROUND);
cr->paint();
cr->move_to(debX,debY);
cr->line_to(finX, finY);
cout<<"Grid : "<<cr
<<" COLOR : <"<<rgbred<<","<<rgbgreen<<","<<regbblue
<<"> : Coord DEB <"<<debX<<","<<debY<<">"
<<" : Coord FIN <"<<finX<<","<<finY<<">"<<endl;
cr->restore();cr->fill_preserve();}
</Code>
merci des reponses
blackallsun
Dernière modification par blackAllSun (Le 28/02/2017, à 17:16)
Hors ligne