本文整理汇总了C++中cairo::RefPtr::add_color_stop_rgb方法的典型用法代码示例。如果您正苦于以下问题:C++ RefPtr::add_color_stop_rgb方法的具体用法?C++ RefPtr::add_color_stop_rgb怎么用?C++ RefPtr::add_color_stop_rgb使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cairo::RefPtr
的用法示例。
在下文中一共展示了RefPtr::add_color_stop_rgb方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: drawBackground
void ItemView::drawBackground(const Cairo::RefPtr<Cairo::Context>& cr, const int width, const int height)
{
//fill background
if (isSelected())
{
cr->set_source_rgb(1, 1, 1);
cr->rectangle(0, 0, width, height);
cr->fill();
}
else
{
cr->set_source_rgb(0.98, 0.98, 0.98);
cr->rectangle(0, 0, width, height);
cr->fill();
}
//time area
Cairo::RefPtr<Cairo::LinearGradient> linearGradientTime = Cairo::LinearGradient::create(0, 0, 0, height);
//set color by status
ColorMode colorMode = getColorMode();
if (colorMode == COLOR_INACTIVE)
{
//gray
linearGradientTime->add_color_stop_rgb(0, 0.75, 0.75, 0.75);
linearGradientTime->add_color_stop_rgb(1, 0.65, 0.65, 0.65);
}
if (colorMode == COLOR_ALARM)
{
//orange
linearGradientTime->add_color_stop_rgb(0, 1.00, 0.60, 0.30);
linearGradientTime->add_color_stop_rgb(1, 0.90, 0.50, 0.20);
}
if (colorMode == COLOR_OK)
{
//green
linearGradientTime->add_color_stop_rgb(0, 0.40, 0.70, 0.45);
linearGradientTime->add_color_stop_rgb(1, 0.30, 0.60, 0.35);
}
cr->set_source(linearGradientTime);
cr->rectangle(0, 0, TIME_WIDTH, height);
cr->fill();
if (isSelected())
drawInnerShadow(cr, width, height);
}
示例2: drawWidget
//.........这里部分代码省略.........
p.moveTo(0, 0);
p.lineTo(sin(hours + minutes / 12.0) * (m_radius * 0.5),
-cos(hours + minutes / 12.0) * (m_radius * 0.5));
p.stroke();
p.restore();
p.setSourceRGBA(1, 0, 0, 0.5);
p.arc(0, 0, m_lineWidth * 2.0, 0, 2.0 * M_PI);
p.fill();
#if 0
// This is where we draw on the window
Glib::RefPtr<Gdk::Window> window = get_window();
if(window)
{
Gtk::Allocation allocation = get_allocation();
const int width = allocation.get_width();
const int height = allocation.get_height();
Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();
if(event)
{
// clip to the area indicated by the expose event so that we only
// redraw the portion of the window that needs to be redrawn
cr->rectangle(event->area.x, event->area.y,
event->area.width, event->area.height);
cr->clip();
}
// background gradient
{
Cairo::RefPtr<Cairo::LinearGradient> pat = Cairo::LinearGradient::create(0.0, 0.0, 0.0, height);
pat->add_color_stop_rgb(1.0, 1.0, 1.0, 1.0);
pat->add_color_stop_rgb(0.0, 0.0, 0.0, 0.0);
cr->rectangle(0, 0, width, height);
cr->set_source(pat);
cr->fill();
}
// scale to unit square and translate (0, 0) to be (0.5, 0.5), i.e.
// the center of the window
cr->scale(width, height);
cr->translate(0.5, 0.5);
cr->set_line_width(m_line_width);
cr->arc(0, 0, m_radius, 0, 2 * M_PI);
cr->save();
cr->set_source_rgba(1.0, 1.0, 1.0, 0.8);
cr->fill_preserve();
cr->restore();
cr->stroke_preserve();
cr->clip();
//clock ticks
for (int i = 0; i < 12; i++)
{
double inset = 0.05;
cr->save();
cr->set_line_cap(Cairo::LINE_CAP_ROUND);
if(i % 3 != 0)
{
inset *= 0.8;
cr->set_line_width(0.03);
示例3:
Cairo::RefPtr<Cairo::ImageSurface>
TextSurface::create_cairo_surface(const std::string& text, const TextProperties& text_props,
Cairo::TextExtents& out_text_extents,
Cairo::FontExtents& out_font_extents)
{
{ // get TextExtents and FontExtents
Cairo::RefPtr<Cairo::ImageSurface> tmp_surface = Cairo::ImageSurface::create(Cairo::FORMAT_RGB24, 0, 0);
Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(tmp_surface);
cr->set_font_size(text_props.get_font_size());
cr->select_font_face(text_props.get_font(), Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL);
cr->get_text_extents(text, out_text_extents);
cr->get_font_extents(out_font_extents);
}
Cairo::RefPtr<Cairo::ImageSurface>
surface = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32,
static_cast<int>(out_text_extents.width + text_props.get_line_width()),
static_cast<int>(out_text_extents.height + text_props.get_line_width()));
Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(surface);
// set the font
cr->set_font_size(text_props.get_font_size());
cr->select_font_face(text_props.get_font(), Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL);
if (text_props.get_line_width() != 0)
{
// create path
cr->move_to(-out_text_extents.x_bearing + text_props.get_line_width()/2.0,
-out_text_extents.y_bearing + text_props.get_line_width()/2.0);
cr->text_path(text);
// paint
cr->set_line_width(text_props.get_line_width());
cr->set_line_join(Cairo::LINE_JOIN_ROUND);
cr->set_source_rgb(0.0, 0.0, 0.0);
cr->stroke();
}
// print text
cr->move_to(-out_text_extents.x_bearing + text_props.get_line_width()/2.0,
-out_text_extents.y_bearing + text_props.get_line_width()/2.0);
cr->set_source_rgb(1.0, 1.0, 0.0);
double y = -out_text_extents.y_bearing - out_font_extents.ascent;
// toying around with color gradients
if (false)
{
Cairo::RefPtr<Cairo::LinearGradient> gradient = Cairo::LinearGradient::create(0, y,
0, y + out_font_extents.ascent + out_font_extents.descent);
gradient->add_color_stop_rgb(0.0, 1.0, 1.0, 0.0);
gradient->add_color_stop_rgb(0.5, 1.0, 1.0, 1.0);
gradient->add_color_stop_rgb(0.5, 0.4, 0.4, 0.2);
gradient->add_color_stop_rgb(1.0, 1.0, 1.0, 0.0);
cr->set_source(gradient);
}
cr->show_text(text);
return surface;
}
示例4: dessiner_carte
//.........这里部分代码省略.........
}
else{
if(matrice.minCoeff() < valeur_min)
valeur_min = matrice.minCoeff();
if(matrice.maxCoeff() > valeur_max)
valeur_max = matrice.maxCoeff();
}
for(int i=0; i<194; i++){
for(int j=0; j<196; j++){
int ecrire = 0;
for(int k=0; k<100; k++){
if(croisement[i][k] != 0){
if((abscisse_points[(i*196)+j] >= croisement[i][k]) ){
if(ecrire == 0 )
ecrire = 1;
else
ecrire = 0;
}
}
else{
k = 100;
}
}
if(ecrire == 1 ){
cr->set_source_rgb(gradient_couleur(valeur_min, valeur_max, matrice(i,j), 'R'), gradient_couleur(valeur_min, valeur_max, matrice(i,j), 'G'), gradient_couleur(valeur_min, valeur_max, matrice(i,j), 'B'));
ordonnee_tmp = ordonnee_points[(i*196)+j] - (points[3][5] - points[3][3]);
abscisse_tmp = ((abscisse_points[(i*196)+j] - points[3][1]) * largeur)/(points[3][2] - points[3][1]);
ordonnee_tmp = ((ordonnee_tmp - points[3][3]) * hauteur)/(points[3][4] - points[3][3]);
cr->arc (abscisse_tmp - decalage_x, ordonnee_tmp - decalage_y, 1, 0, 2 * M_PI);
cr->fill();
}
}
}
/* Insertion de texte pour mettre un titre à la carte */
/* Le titre est écrit en noir */
cr->set_source_rgb(0, 0, 0);
/* Les lettres font 15 pixels de hauteur */
cr->set_font_size(15);
/* Sélection de la police */
cr->select_font_face("Sans", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD);
string deb_titre("Carte ");
cr->get_text_extents(deb_titre + titre.c_str(), extents);
/* Positionnement du titre */
cr->move_to((L_MAP/2) - (extents.width/2), H_MAP - 20);
/* Ecriture du titre */
cr->show_text(deb_titre + titre.c_str());
/* Dessin du gradient de couleur */
/* Création d'un gradient le long de la ligne définie par (L_MAP - 50, 50) et (L_MAP - 50, H_MAP - 100) */
Cairo::RefPtr< Cairo::LinearGradient > gradient = Cairo::LinearGradient::create(L_MAP - 50, 50, L_MAP - 50, H_MAP - 100);
/* Couleur de départ pour le gradient */
gradient->add_color_stop_rgb(0, 0, 1, 0);
/* Couleur de fin pour le gradient */
if(valeur_min == valeur_max)
gradient->add_color_stop_rgb(1, 0, 1, 0);
else
gradient->add_color_stop_rgb(1, 1, 0, 0);
/* Dessin d'un rectangle */
cr->rectangle(L_MAP - 50, 50, 10, H_MAP - 100);
/* Colorisation du rectangle avec le gradient */
cr->set_source(gradient);
/* Remplissage du rectangle (toujours avec le gradient) */
cr->fill();
/* Conversion du minimum de la matrice en lettres (pour afficher ce que représente la valeur du minimum du gradient)*/
sstr = new stringstream();
*sstr << valeur_min;
/* Le titre est écrit en noir */
cr->set_source_rgb(0, 0, 0);
/* Les lettres font 10 pixels de hauteur */
cr->set_font_size(10);
/* Sélection de la police */
cr->select_font_face("Sans", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_BOLD);
/* Récupération de la taille la valeur min(hauteur et largeur) */
cr->get_text_extents((sstr->str()).c_str(), extents);
/* Positionnement du texte */
cr->move_to((L_MAP - 45) - (extents.width/2), 50 - 5);
/* Ecriture du titre */
cr->show_text((sstr->str()).c_str());
/* Conversion du maximum de la matrice en lettres (pour afficher ce que représente la valeur du maximum du gradient)*/
sstr = new stringstream();
*sstr << valeur_max;
/* Récupération de la taille la valeur max(hauteur et largeur) */
cr->get_text_extents((sstr->str()).c_str(), extents);
/* Positionnement du texte */
cr->move_to((L_MAP - 45) - (extents.width/2), H_MAP - 50 + extents.height + 5);
/* Ecriture du titre */
cr->show_text((sstr->str()).c_str());
/* Vidage du stringstream */
if(zoom_actif == 0)
get_gdk_pixbuf();
}