2016-11-08 4 views
0

У меня есть Fl_Choice с несколькими вариантами, например:Пользовательский цвет фона за элемент?

Fl_Choice* o = new Fl_Choice(70, 100, 240, 25, "Some Options:"); 
o->add("Blue"); 
o->add("Black"); 
o->add("Orange"); 
o->add("Purple"); 

Я хотел бы установить пользовательский цвет для фона каждого элемента, оставляя цвет переднего плана на белый.

Как настроить пользовательский фон для каждого элемента?

ПРИМЕЧАНИЕ: Я использую v90, не знаю, какой тег я должен использовать для этого, или если vs2008 достаточно, любезно удалите это примечание, если его достаточно, как есть, или напишите мне комментарий с каким другим тегом я должен добавить.

ответ

0

Не так легко установить цвет фона, но вы можете установить цвет переднего плана

Fl_Menu_Item choices[] = 
{ 
    //            ,-- The colour 
    {"red",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0xFF000000}, 
    {"blue",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0x0000FF00}, 
    {"green",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0x00FF0000}, 
    {"yellow",0,(Fl_Callback*)0, (void*) 0, 0, 0, 0, 0, 0xFFFF0000}, 
    {0} 
}; 

... 

Fl_Choice *c = new Fl_Choice(50,250,200,25); 
c->menu(choices); 

В качестве альтернативы, вы можете получить от Fl_Choice, если вы не хотите так много нулей

class ColourChoice: public Fl_Choice 
{ 
public: 
    ColourChoice(int x, int y, int w, int h, const char* l = 0) 
     : Fl_Choice(x, y, w, h, l) 
    { 
    } 

    void add(const char* text, Fl_Color color) 
    { 
     Fl_Choice::add(text); 
     Fl_Menu_Item* item = const_cast<Fl_Menu_Item*>(find_item(text)); 
     item->labelcolor(color); 
    } 
}; 

... 
ColourChoice* c = new ColourChoice(...); 
c->add("purple", (Fl_Color)0xFF00FF00); 
+0

спасибо не торопитесь ответить, насколько он отличается от фона? Я даже не знаю, что искать честно ... fltk - отличная библиотека, но это второстепенные вещи действительно трудно найти примеры или что-то еще. К несчастью, я не могу проголосовать за ваш ответ, но, надеюсь, хорошая душа сделает это на моем месте, пока я не смогу сделать это сам. –

+0

Не нужно повышать - просто отметьте его как ответ. Изменение фона предполагает переписывание Fl_Menu с опцией цвета для фона. Потребуется некоторое время, чтобы понять код FLTK: есть много однострочных и однобуквенных переменных. Основная проблема с фоном - вы также можете изменить цвет переднего плана, поскольку некоторые комбинации не очень читаемы - например, черный на синем. Другой вариант - использовать Fl_Radio_Light_Button и изменить цвета огней, но это займет больше места, чем Fl_Choice. – cup

+0

, но будет ли он все-таки выпадающим списком? Не могли бы вы показать мне пример этого? –

Смежные вопросы