Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > как определить Color


Автор: akolesni 20.10.2006, 12:53
как определить Color(r-?, g-?, b-?) в определенной точке(Point)  компонента(Image в JFrame )?

Автор: powerOn 20.10.2006, 13:35
Сначало "грабим" компонент в BufferedImage (Пример есть в http://vingrad.ru/JAVA-JAV-003047). Потом получаем цвет (число этого цвета) пикселя с помощью метода getRGB(int x, int y)  класса BufferedImage. Далее этот цвет (число этого цвета) используется для создания  объекта Color, из которого составляющие можно получить c помощью методов getGreen(), getRed(), getBlue() соответственно.

Автор: akolesni 25.10.2006, 11:19
как можно добавить изображение в BufferedImage ?
у меня всегда возвращает Color(0,0,0)
Код


public class MFrame extends JFrame implements MouseMotionListener{

    private JLabel jLabel1;    
    private Point myPoint;
    private JPanel myPanel;
    private BufferedImage bi;
    Color curCol;
        
    public MFrame(){
        
        myPanel = new JPanel();
        this.add(myPanel);
        initComponents();
        myPanel.addMouseMotionListener(this);
        this.setVisible(true);
  }
    private void initComponents() {    
        jLabel1 = new JLabel();    
        jLabel1.setHorizontalAlignment(SwingConstants.CENTER);    
        jLabel1.setIcon(new ImageIcon(getClass().getResource("Bild.JPG")));    
        myPanel.add(jLabel1, BorderLayout.CENTER);    
        pack();    
    }
    public void mouseDragged(MouseEvent e) {}
    public void mouseMoved(MouseEvent e) {
        
        bi = new BufferedImage(myPanel.getWidth(), myPanel.getHeight(),BufferedImage.TYPE_INT_RGB);
        myPoint = e.getPoint();
        curCol = new Color(bi.getRGB((int)myPoint.getX(),(int)myPoint.getY()));
        System.out.println(curCol.getRed()+ " "+curCol.getGreen()+" "+curCol.getBlue());
        }
}

Автор: LSD 25.10.2006, 11:31
Код
class MFrame extends JFrame implements MouseMotionListener, ComponentListener
{
  private JPanel myPanel;
  private BufferedImage image;

  public MFrame()
  {
    myPanel = new JPanel();
    this.add(myPanel);
    initComponents();
    myPanel.addMouseMotionListener(this);
    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
  }

  private void initComponents()
  {
    JLabel label = new JLabel();
    label.setHorizontalAlignment(SwingConstants.CENTER);
    label.setIcon(new ImageIcon("6000.png"));
    myPanel.add(label, BorderLayout.CENTER);
    myPanel.addMouseMotionListener(this);
    myPanel.addComponentListener(this);
  }

  public void mouseDragged(MouseEvent e)
  {
  }

  public void componentMoved(ComponentEvent e)
  {
  }

  public void componentShown(ComponentEvent e)
  {
  }

  public void componentHidden(ComponentEvent e)
  {
  }

  public void componentResized(ComponentEvent e)
  {
    image = new BufferedImage(myPanel.getWidth(), myPanel.getHeight(), BufferedImage.TYPE_INT_RGB);
  }

  public void mouseMoved(MouseEvent e)
  {
    if(image != null)
    {
      Component c = (Component) e.getSource();
      Point myPoint = e.getPoint();
      c.paint(image.getGraphics());
      Color curCol = new Color(image.getRGB((int) myPoint.getX(), (int) myPoint.getY()));
      System.out.println(curCol.getRed() + " " + curCol.getGreen() + " " + curCol.getBlue());
    }
  }

  public static void main(String[] args)
  {
    new MFrame();
  }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)