>  기사  >  Java  >  정확한 색상 조작을 위해 Java에서 픽셀화된 격자를 만드는 방법은 무엇입니까?

정확한 색상 조작을 위해 Java에서 픽셀화된 격자를 만드는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-27 15:16:29601검색

How to Create a Pixelated Grid in Java for Precise Color Manipulation?

Java에서 픽셀 그리드 만들기

픽셀 편집을 꿈꾸는 사람에게는 정밀한 색상 조작이 가능한 그리드 시스템을 설계하는 것이 어려울 수 있습니다. 그러나 Java는 프로세스를 간소화할 수 있는 몇 가지 유용한 구성 요소를 제공합니다.

JButton을 그리드 셀로 사용

처음에는 JButton을 그리드 셀로 사용하는 것이 비효율적으로 보일 수 있습니다. 개별 셀 수정이 가능하지만 수많은 셀을 작업할 때 번거롭습니다.

대체 그리드 구현

더 효과적인 솔루션은 drawImage() 메서드를 활용하는 것입니다. 마우스 좌표를 조정합니다. 이 기술은 그리드와 유사한 동작을 유지하면서 더 큰 "픽셀"을 생성합니다.

예제 코드

다음 코드는 이 접근 방식을 보여줍니다.

<code class="java">import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;

public class Grid extends JPanel implements MouseMotionListener {

    private BufferedImage img;
    private int imgW, imgH, paneW, paneH;

    public Grid(String name) {
        super(true);
        // Load an image icon
        Icon icon = UIManager.getIcon(name);
        imgW = icon.getIconWidth();
        imgH = icon.getIconHeight();
        // Calculate panel dimensions
        this.setPreferredSize(new Dimension(imgW * 10, imgH * 10));
        // Create an image buffer
        img = new BufferedImage(imgW, imgH, BufferedImage.TYPE_INT_ARGB);
        // Draw the icon to the buffer
        Graphics2D g2d = (Graphics2D) img.getGraphics();
        icon.paintIcon(null, g2d, 0, 0);
        g2d.dispose();
        // Register mouse motion listener
        this.addMouseMotionListener(this);
    }

    @Override
    protected void paintComponent(Graphics g) {
        paneW = this.getWidth();
        paneH = this.getHeight();
        // Draw the buffered image
        g.drawImage(img, 0, 0, paneW, paneH, null);
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // Scale mouse coordinates based on panel dimensions
        Point p = e.getPoint();
        int x = p.x * imgW / paneW;
        int y = p.y * imgH / paneH;
        // Retrieve and display color information at the grid location
        int c = img.getRGB(x, y);
        this.setToolTipText(x + "," + y + ": "
                + String.format("%08X", c));
    }

    @Override
    public void mouseDragged(MouseEvent e) {
    }

    public static void main(String[] args) {
        // Create a JFrame and add the Grid panel
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new Grid("Tree.closedIcon"));
        f.pack();
        f.setVisible(true);
    }
}</code>

사용법

  1. 아이콘 이름(예: "Tree.closedIcon")을 전달하는 Grid 객체를 생성합니다.
  2. JFrame에 그리드를 추가합니다.
  3. 애플리케이션을 실행하세요.

결과

그리드가 표시되어 사용자가 픽셀화된 이미지 위로 마우스를 이동하면서 색상 정보를 얻을 수 있습니다. 각 셀.

위 내용은 정확한 색상 조작을 위해 Java에서 픽셀화된 격자를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.