2012-11-13 15 views
11

हेक्स के लिए क्या मेरे पास है R है: 255 जी: 181 बी: 178, और मैं सी # में काम कर रहा हूँ (WP8 के लिए, अधिक विशिष्ट)आरजीबी ints से परिवर्तित

मैं एक में बदलने के लिए चाहते हैं एक रंग के रूप में उपयोग करने के लिए हेक्स संख्या (एक लिखने योग्य बिटमैप के पिक्सेल रंग को सेट करने के लिए)। मैं जो कर रहा हूं वह निम्नलिखित है:

int hex = (255 << 24) | ((byte)R << 16) | ((byte)G << 8) | ((Byte)B<<0); 

लेकिन जब मैं ऐसा करता हूं, तो मुझे नीला हो जाता है।

कोई विचार क्या मैं गलत कर रहा हूं?

इसके अलावा, इस पूर्ववत करने के लिए, आरजीबी मूल्यों की जाँच करने के लिए, मैं जा रहा हूँ:

int r = ((byte)(hex >> 16)); // = 0 
int g = ((byte)(hex >> 8)); // = 0 
int b = ((byte)(hex >> 0)); // = 255 
+0

उदाहरण के लिए सीएसएस में उपयोग किए जाने वाले रंग का हेक्स प्रारूप है। क्या तुम्हारा मतलब है कि? उदाहरण के लिए व्हाइट -> एफएफएफएफएफएफ, ब्लू -> 0000 एफएफ? –

+0

आपका क्या मतलब है "बस नीला हो" - दिखाएं कि आप क्या उम्मीद करते हैं और आपको क्या मिलता है ... (यानी आप वर्तमान कोड और मूल्य एफएफएफएफबी 5 बी 2 देंगे) –

+0

मेरा मतलब है, कभी भी रंग प्राप्त करने के बजाय: आर: 255, जी: 181, बी: 178 होना चाहिए (हल्का गुलाबी), मुझे बस 0000FF (नीला) – Toadums

उत्तर

25
Color myColor = Color.FromArgb(255, 181, 178); 

string hex = myColor.R.ToString("X2") + myColor.G.ToString("X2") + myColor.B.ToString("X2"); 
+1

या बाइट्स – NoPyGod

+0

पर केवल ToString ("X2") भाग का उपयोग करें, आप कहते हैं कि "इसे हेक्स नंबर में कनवर्ट करें" लेकिन हेक्स एक संख्या नहीं है, यह एक स्ट्रिंग है जो किसी संख्या का प्रतिनिधित्व करने के लिए उपयोग की जाती है। – NoPyGod

+0

ओह..सोरी मुझे लगता है कि हेक्स का उपयोग उपयोगकर्ता के देखने के लिए आसान बनाने के लिए किया जाता है। लेकिन बिटमैप की पिक्सेल सरणी एक int [] है, इसलिए मुझे एक int होने की आवश्यकता है (यानी आर, जी, बी को जोड़ने का तरीका जानें) – Toadums

1

आप स्ट्रिंग concatenations से बचने के लिए एक छोटी स्ट्रिंग स्वरूप का उपयोग कर सकते हैं।

string.Format("{0:X2}{1:X2}{2:X2}", r, g, b) 
संबंधित मुद्दे