Membuat Grid Piksel dalam Java
Untuk editor piksel yang bercita-cita tinggi, mereka bentuk sistem grid yang membolehkan manipulasi warna ketepatan boleh menjadi menakutkan. Walau bagaimanapun, Java menawarkan beberapa komponen berguna yang boleh menyelaraskan proses.
JButton sebagai Sel Grid
Pada mulanya, menggunakan JButtons sebagai sel grid mungkin kelihatan tidak cekap. Walaupun ia membenarkan pengubahsuaian sel individu, ia menjadi menyusahkan apabila bekerja dengan banyak sel.
Pelaksanaan Grid Alternatif
Penyelesaian yang lebih berkesan ialah menggunakan kaedah drawImage() dan koordinat tetikus skala. Teknik ini mencipta "piksel" yang lebih besar sambil mengekalkan gelagat seperti grid.
Kod Contoh
Kod berikut menunjukkan pendekatan ini:
<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>
Penggunaan
Keputusan
Grid akan dipaparkan, membolehkan pengguna menggerakkan tetikus ke atas imej berpiksel sambil mendapatkan maklumat warna untuk setiap sel.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Grid Piksel di Java untuk Manipulasi Warna Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!