Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mencipta Grid Piksel di Java untuk Manipulasi Warna Tepat?

DDD
Lepaskan: 2024-10-27 15:16:29
asal
612 orang telah melayarinya

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

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>
Salin selepas log masuk

Penggunaan

  1. Buat objek Grid yang melepasi nama ikon (cth., "Tree.closedIcon").
  2. Tambahkan grid pada JFrame.
  3. Jalankan aplikasi.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!