2009-08-25 19 views
8

मैं एक पूर्णांक प्रकार के रूप में जमा एक ARGB मूल्य की है। यह ToArgb को कॉल करके संग्रहीत किया गया था।विभाजन ARGB महत्व देता

मैं अब पूर्णांक मूल्य से अलग-अलग रंग चैनलों की बाइट मूल्यों चाहते हैं।

उदाहरण

int mycolor = -16744448; 
byte r,g,b,a; 

GetBytesFromColor(mycolor,out a, out r, out g, out b); 

के लिए

आप GetBytesFromColor कैसे लागू होगा?

संदर्भ मैं एक रंग मूल्य गुजर रहा एक Silverlight आवेदन जो व्यक्ति बाइट मूल्यों की जरूरत है एक रंग वस्तु के निर्माण के लिए करने के लिए पूर्णांक के रूप में DB में कायम देने के लिए।

System.Windows.Media.Color.FromArgb(byte a, byte r, byte g, byte b) 

उत्तर

13

आप एक 32-बिट पूर्णांक से 4 लगातार 8 बिट मात्रा के बाद कर रहे हैं; इसलिए मास्किंग और स्थानांतरण का एक संयोजन:

b = (byte)(myColor & 0xFF); 
g = (byte)((myColor >> 8) & 0xFF); 
r = (byte)((myColor >> 16) & 0xFF); 
a = (byte)((myColor >> 24) & 0xFF); 
+0

इस प्रक्रिया को कैसे उलट है? – nebkat

+0

'mycolor = (क << 24) + (आर << 16) + (छ << 8) + बी,' –

2
public void GetBytesFromColor(int color, out a, out r, out g, out b) 
{ 
    Color c = Color.FromArgb(color); 
    a = c.A; 
    r = c.R; 
    g = c.G; 
    b = c.B; 
} 
+1

-1। सिल्वरलाइट FromArgb के इस अधिभार नहीं है। – AnthonyWJones

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