LINUX.ORG.RU

[GTK+]. Использовать в gdk_rgb_gc_set_foreground или gdk_gc_set_foreground значение GtkColorButton


0

1

Получаю в color значение цвета из GtkColorButton (colorbuttonBG)

MainWindowObjects* mwo = (MainWindowObjects*)data;
GdkColor color;
gtk_color_button_get_color (mwo->colorbuttonBG, &color);
g_print("COLOR: %x %d %d %d \n", color.pixel, color.red, color.green, color.blue);
но если использовать color в gdk_gc_set_foreground напрямую
gdk_gc_set_foreground(gc, &color);
будет выдаваться каждый раз разный цвет, color.pixel каждый раз разный а для gdk_rgb_gc_set_foreground вообще нужен guint32 rgb

может быть можно как-то преобразовать color.red, color.green, color.blue в guint32

или есть какие-нибудь другие варианты


А если использовать gdk_gc_set_rgb_fg_color()/gdk_gc_set_rgb_bg_color() цвета тоже отличаются?

Вообще же для преобразования 16-битного цвета в 8-битный можно воспользоваться следующей простой формулой x/65535*255 где x — значение цвета в соответствующем канале. Переводим каждый канал из 16 бит в 8 и складываем в hex. Костыльно конечно, но работает. Может другие кое что получше предложат.

fat_angel ★★★★★
()
Ответ на: комментарий от fat_angel

magic, gdk_gc_set_rgb_fg_color - работают! спасибо большое!

g-71
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.