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>
사용법
결과
그리드가 표시되어 사용자가 픽셀화된 이미지 위로 마우스를 이동하면서 색상 정보를 얻을 수 있습니다. 각 셀.
위 내용은 정확한 색상 조작을 위해 Java에서 픽셀화된 격자를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!