Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 28/02/2017, à 17: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, à 18:16)

Hors ligne