2012-05-05 14 views
5

मेरे पास मेरे एप्लिकेशन में कुछ स्लाइडर्स हैं जो उपयोगकर्ता को एआरजीबी रंग बदलने की अनुमति देता है, हालांकि मुझे इन मानों को हेक्स वैल्यू में 0xff000000 जैसे कनवर्ट करने की आवश्यकता है, जो कि ठोस काला है। "0xccffffff":आरजीबीए मानों को हेक्स रंग कोड में कनवर्ट करें

int color = toHex(new Color(153f, 153f, 153f, 0.80f)); 

कोई भी विचार पर

protected int toHex(Color col) { 
    String as = pad(Integer.toHexString(col.getAlpha())); 
    String rs = pad(Integer.toHexString(col.getRed())); 
    String gs = pad(Integer.toHexString(col.getGreen())); 
    String bs = pad(Integer.toHexString(col.getBlue())); 
    String hex = "0x" + as + rs + gs + bs; 
    return Integer.parseInt(hex, 16); 
} 

private static final String pad(String s) { 
    return (s.length() == 1) ? "0" + s : s; 
} 

हालांकि नीचे की तरह पूर्णांक मान रही पर, मैं इनपुट स्ट्रिंग के लिए एक NumberFormatException मिलती है:

यह वही है मैं अब तक किया है इसे एक इंटीजर में कैसे प्राप्त करें? धन्यवाद।

उत्तर

4

रंग पैरामीटर 1f और 0f के बीच फ़्लोट होना चाहिए। तो यह एक वैध रंग है:

int color = toHex(new Color(1f, 1f, 1f, 1f)); 

जो सफेद है।

+0

आह, धन्यवाद। इसे अब हल किया गया। मैं अपने फ़ॉन्ट सामान के लिए स्लिम का उपयोग कर रहा हूं और अब मैंने कलर को java.awt.color पर स्विच कर दिया है। – Kaikz

0

समस्या यह है कि आप अल्फा मान शामिल हैं। तो आपका अधिकतम रंग कोड #FFFFFFFF (8 अंक) है।

विधि Integer.parseInt आपको -0x80000000 से 0x7FFFFFFF से मूल्य का विश्लेषण करने देगा। इससे अपना मूल्य 0xCC999999 प्राप्त करने के लिए, आपको मूल्य और इनपुट -0x33666667 को अस्वीकार करना होगा - जो निश्चित रूप से उपयोगी नहीं है।

क्लंकी लेकिन स्थिर वर्कअराउंड Long का उपयोग कर रहा है।

(int) Long.parseLong(text, 16) 
संबंधित मुद्दे