2010-02-08 13 views
5

के लिए पृष्ठभूमि रंग निम्न कोड में, मुझे मुख्य GTK_WINDOW_TOPLEVEL का पृष्ठभूमि रंग 0xc0deed होना चाहिए। लेकिन जब मैं दौड़ता हूं तो यह काला दिखाई देता है। मैंने gtk_drawing_area_new भी कोशिश की और इसे मुख्य विंडो में जोड़ दिया। लेकिन फिर भी यह काला दिखाई दे रहा है, हालांकि मैं लाल, नीले, सफेद आदि जैसे अन्य रंगGTK_WINDOW_TOPLEVEL Gtk विजेट

#include <gtk/gtk.h> 

int main(int argc, char *argv[]) 
{ 
    GtkWidget *p_s_window = NULL; 
    GdkColor color; 
    color.red = 0x00C0; 
    color.green = 0x00DE; 
    color.blue = 0x00ED; 
    gtk_init(&argc, &argv); 
    p_s_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
    gtk_window_set_position(GTK_WINDOW(p_s_window), GTK_WIN_POS_CENTER); 
    gtk_window_set_title(GTK_WINDOW(p_s_window), "hello"); 
    gtk_widget_modify_bg(p_s_window, GTK_STATE_NORMAL, &color); 
    g_signal_connect_swapped(G_OBJECT(p_s_window), "destroy", 
      G_CALLBACK(gtk_main_quit), NULL); 
    gtk_widget_show_all(p_s_window); 
    gtk_main(); 
    return 0; 
} 

उत्तर

5

GdkColor घटकों 16 बिट कर रहे हैं हो सकता है, इस प्रकार 65535/255 के साथ अपने मूल्यों 65535 के माध्यम से 0 की एक श्रृंखला होने गुणा और तुम ठीक हो जाओगे।

उदाहरण के लिए पीला होगा:

color.red = 0xffff; 
color.green = 0xffff; 
color.blue = 0; 
+0

धन्यवाद .. बहुत बहुत धन्यवाद! :) – bluegenetic

1

हालांकि सवाल काफी पुराना है, मैं एक और जवाब यह है कि गणना की आवश्यकता नहीं है प्रदान करना चाहते हैं।

आप अपने रंग की स्ट्रिंग प्रस्तुति को पार्स करने के लिए gdk_color_parse() का उपयोग कर सकते हैं। के रूप में documentation में उल्लेख किया है, यह विभिन्न स्वरूपों पर काम करता है: [! इस प्रकार से]

स्ट्रिंग या तो मानक के नाम के एक बड़े सेट (X11 rgb.txt फ़ाइल से लिया गया) में से एक है, या यह एक हो सकता है कर सकते हैं "#rgb" "#rrggbb", "#rrrgggbbb" या "#rrrrggggbbbb" रूप में हेक्साडेसिमल मान "आर", "जी" और "बी" रंग के लाल, हरे और नीले रंग के घटक के हेक्स अंक हैं क्रमशः।

तो आपके मामले में यह केवल होगा:

GdkColor color; 
if (gdk_color_parse("#c0deed", &color)) { 
    gtk_widget_modify_bg(p_s_window, GTK_STATE_NORMAL, &color); 
} else { 
    // set default color 
} 

कृपया ध्यान दें कि जीटीके 3.0 के रूप में, gtk_widget_modify_bg() मान्य नहीं है। इसके बजाय gtk_widget_override_background_color() का उपयोग करें।

संबंधित मुद्दे