픽셀 에디터의 그리드 구현
픽셀 에디터 개발 시 색상 변화를 수용하는 그리드 구조를 구현하는 효과적인 방법 결정 클릭하고 끌 때 필수적입니다. 일반적인 접근 방식은 각 셀에 대해 개별 JButton을 사용하는 것이지만 이는 비효율적이고 번거로울 수 있습니다.
이미지 크기 조정이 가능한 그리드
대체 솔루션은 drawImage()를 사용하는 것입니다. 마우스 좌표의 크기를 조정하여 큰 픽셀을 만드는 방법입니다. 이 기술은 아래에 설명된 것처럼 여러 셀의 색상을 동시에 변경하는 간단하고 효율적인 방법을 제공합니다.
<code class="java">import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; /** @see http://stackoverflow.com/questions/2900801 */ public class Grid extends JPanel implements MouseMotionListener { private final BufferedImage img; private int imgW, imgH, paneW, paneH; public Grid(String name) { super(true); Icon icon = UIManager.getIcon(name); imgW = icon.getIconWidth(); imgH = icon.getIconHeight(); this.setPreferredSize(new Dimension(imgW * 10, imgH * 10)); img = new BufferedImage(imgW, imgH, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (Graphics2D) img.getGraphics(); icon.paintIcon(null, g2d, 0, 0); g2d.dispose(); this.addMouseMotionListener(this); } @Override protected void paintComponent(Graphics g) { paneW = this.getWidth(); paneH = this.getHeight(); g.drawImage(img, 0, 0, paneW, paneH, null); } @Override public void mouseMoved(MouseEvent e) { Point p = e.getPoint(); int x = p.x * imgW / paneW; int y = p.y * imgH / paneH; int c = img.getRGB(x, y); this.setToolTipText(x + "," + y + ": " + String.format("%08X", c)); } @Override public void mouseDragged(MouseEvent e) { } private static void create() { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new Grid("Tree.closedIcon")); f.pack(); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { create(); } }); } }</code>
이 기술을 활용하면 조정 가능한 색상 속성을 갖춘 사용자 정의 가능한 그리드 시스템을 효율적으로 구현할 수 있습니다. 픽셀 편집기 애플리케이션의 요구 사항.
위 내용은 `drawImage()` 메서드를 사용하여 픽셀 편집기의 그리드 구조를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!