GTK+ 2.0 Tutorial |
||
---|---|---|
Miscellaneous Widgets |
Виджет выбора цвета является достаточно сложным и позволяет выбирать цвет манипулируя треугольником в цветовой схеме RGB (Red(красный), Green(зелёный), Blue(синий)) и HSV (Hue(оттенок), Saturation(насыщенность), Value(значение)). Цвет можно выбирать используя простые слайдеры или вращая треугольную область насыщенности и оттенка вокруг цветовой шкалы. Опционально может быть установлена прозрачность.
Виджет выбор цвета создаёт только один сигнал, "color_changed", он производится когда происходит изменение цвета пользователем, или через функцию gtk_color_selection_set_color().
Виджет имеет две особенности: GtkColorSelection и GtkColorSelectionDialog.
GtkWidget *gtk_color_selection_new( void );
|
Вам не прийдется использовать этот конструктор непосредственно. Это создаёт шаблонный виджет ColorSelection который вы сделаете основным самостоятельно. Виджет ColorSelection наследует от виджета VBox.
GtkWidget *gtk_color_selection_dialog_new( const gchar *title );
|
Самый основной конструктор color selection. Это создаёт диалог ColorSelectionDialog. Он состоит из рамки содержащей виджет ColorSelection, HSeparator и HBox с тремя кнопками, "Ok", "Cancel" и "Help". Вы можете получить доступ к этим кнопкам через виджеты "ok_button", "cancel_button" и "help_button" в структуре ColorSelectionDialog, (т,е, GTK_COLOR_SELECTION_DIALOG (colorseldialog)->ok_button)).
void gtk_color_selection_set_has_opacity_control( GtkColorSelection *colorsel,
gboolean has_opacity );
|
Виджет выбор цвета поддерживает регулировку полупрозрачности (известную также как alpha channel), которая отключена по умолчанию. Вызов этой функции со значением аргумента has_opacity установленным в TRUE включает полупрозрачность. Соответственно значение FALSE отключает полупрозрачность.
void gtk_color_selection_set_current_color( GtkColorSelection *colorsel,
GdkColor *color );
void gtk_color_selection_set_current_alpha( GtkColorSelection *colorsel,
guint16 alpha );
|
Вы можете установить текущий цвет явно, вызвав gtk_color_selection_set_current_color() с указателем на GdkColor. Установка полупрозрачности (alpha channel) делается с помощью gtk_color_selection_set_current_alpha(). Значение alpha должно быть между 0 (полностью прозрачно) и 65636 (полностью непрозрачно).
void gtk_color_selection_get_current_color( GtkColorSelection *colorsel,
GdkColor *color );
void gtk_color_selection_get_current_alpha( GtkColorSelection *colorsel,
guint16 *alpha );
|
Эти функции используются когда вам нужно получить текущее значение цвета при получении сигнала "color_changed".
Вот - простой пример, демонстрирующий использование ColorSelectionDialog. Программа отображает окно, содержащее область рисунка. Нажатие на кнопку открывает диалог выбора цвета и изменение цвета в диалоге выбора цвета, изменяет цвет фона самой программы.
Calendar |
File Selections |