Erstellen eines Pixelrasters in Java
Für angehende Pixeleditoren kann das Entwerfen eines Rastersystems, das eine präzise Farbmanipulation ermöglicht, entmutigend sein. Allerdings bietet Java einige nützliche Komponenten, die den Prozess rationalisieren können.
JButton als Rasterzelle
Die Verwendung von JButtons als Rasterzellen mag zunächst ineffizient erscheinen. Während es die Änderung einzelner Zellen ermöglicht, wird es bei der Arbeit mit zahlreichen Zellen umständlich.
Alternative Rasterimplementierung
Eine effektivere Lösung ist die Verwendung der Methode drawImage() und skalieren Sie Mauskoordinaten. Diese Technik erzeugt größere „Pixel“ und behält gleichzeitig das gitterartige Verhalten bei.
Beispielcode
Der folgende Code veranschaulicht diesen Ansatz:
<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>
Verwendung
Ergebnis
Das Raster wird angezeigt, sodass Benutzer die Maus über das pixelige Bild bewegen und gleichzeitig Farbinformationen für erhalten können jede Zelle.
Das obige ist der detaillierte Inhalt vonWie erstelle ich in Java ein Pixelraster für eine präzise Farbmanipulation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!