Преобразование значения цвета RGB в шестнадцатеричное

В моем приложении Java я смог получить значение цвета JButton с точки зрения значений красного, зеленого, синего; Я сохранил эти значения в трех целых числах.

Как преобразовать значения RGB в эквивалентное шестнадцатеричное значение?

Пример того, как в этом формате #0033fA

Вы можете использовать

 String hex = String.format("#%02x%02x%02x", r, g, b); 

Используйте капитал X, если вы хотите, чтобы ваши итоговые шестнадцатеричные цифры были заглавные ( #FFFFFF vs. #ffffff ).

Один вкладыш, но без String.format:

 Color your_color = Color.BLACK; String hex = "#"+Integer.toHexString(your_color.getRGB()).substring(2); 

Вы можете добавить .toUpperCase() если хотите перейти на заглавные буквы.

 Random ra = new Random(); int r, g, b; r=ra.nextInt(255); g=ra.nextInt(255); b=ra.nextInt(255); Color color = new Color(r,g,b); String hex = Integer.toHexString(color.getRGB() & 0xffffff); if (hex.length() < 6) { hex = "0" + hex; } hex = "#" + hex; 

Это адаптированная версия ответа, полученная Вивиен Барусс с обновлением от Vulcan . В этом примере я использую ползунки для динамического возврата значений RGB из трех ползунков и отображения этого цвета в прямоугольнике. Затем в методе toHex () я использую значения для создания цвета и отображения соответствующего цветового кода Hex.

Этот пример не содержит правильных ограничений для GridBagLayout. Хотя код будет работать, дисплей будет выглядеть странно.

 public class HexColor { public static void main (String[] args) { JSlider sRed = new JSlider(0,255,1); JSlider sGreen = new JSlider(0,255,1); JSlider sBlue = new JSlider(0,255,1); JLabel hexCode = new JLabel(); JPanel myPanel = new JPanel(); GridBagLayout layout = new GridBagLayout(); JFrame frame = new JFrame(); //set frame to organize components using GridBagLayout frame.setLayout(layout); //create gray filled rectangle myPanel.paintComponent(); myPanel.setBackground(Color.GRAY); //In practice this code is replicated and applied to sGreen and sBlue. //For the sake of brevity I only show sRed in this post. sRed.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent e){ myPanel.setBackground(changeColor()); myPanel.repaint(); hexCode.setText(toHex()); } } ); //add each component to JFrame frame.add(myPanel); frame.add(sRed); frame.add(sGreen); frame.add(sBlue); frame.add(hexCode); } //end of main //creates JPanel filled rectangle protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawRect(360, 300, 10, 10); g.fillRect(360, 300, 10, 10); } //changes the display color in JPanel private Color changeColor() { int r = sRed.getValue(); int b = sBlue.getValue(); int g = sGreen.getValue(); Color c; return c = new Color(r,g,b); } //Displays hex representation of displayed color private String toHex() { Integer r = sRed.getValue(); Integer g = sGreen.getValue(); Integer b = sBlue.getValue(); Color hC; hC = new Color(r,g,b); String hex = Integer.toHexString(hC.getRGB() & 0xffffff); while(hex.length() < 6){ hex = "0" + hex; } hex = "Hex Code: #" + hex; return hex; } } 

Огромное спасибо вам и Вивьен и Вулкан. Это решение работает отлично и было очень просто реализовать.

  • Преобразование шестнадцатеричного цвета в RGB и наоборот
  • Есть ли веские причины для использования шестнадцатеричных значений по десятичной для значений цвета RGB в CSS?
  • Предупреждение libpng: iCCP: известный неправильный профиль sRGB
  • Как конвертировать 16-битный RGB565 в 24-разрядный RGB888?
  • Возвращает значения RGB из Range.Interior.Color (или любого другого свойства цвета)
  • C # преобразовать значение RGB в CMYK с помощью профиля ICC?
  • Как я могу считывать значения пикселей изображения как RGB в 2d-массив?
  • Значения RGB видимого спектра
  • Название цвета базы данных RGB
  • Алгоритм проверки подобия цветов
  • Как конвертировать RGB из YUV420p для ffmpeg encoder?
  • Давайте будем гением компьютера.