Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Melaksanakan Struktur Grid untuk Editor Pixel Menggunakan Kaedah `drawImage()`?

Patricia Arquette
Lepaskan: 2024-10-27 00:42:02
asal
231 orang telah melayarinya

How to Implement a Grid Structure for Pixel Editor Using `drawImage()` Method?

Pelaksanaan Grid untuk Editor Pixel

Dalam pembangunan editor piksel, menentukan kaedah yang berkesan untuk melaksanakan struktur grid yang menampung perubahan warna apabila diklik dan diseret adalah penting. Pendekatan biasa melibatkan penggunaan JButton individu untuk setiap sel, tetapi ini mungkin tidak cekap dan menyusahkan.

Grid dengan Penskalaan Imej

Penyelesaian alternatif melibatkan penggunaan drawImage() kaedah untuk mencipta piksel besar dengan menskalakan koordinat tetikus. Teknik ini menyediakan cara yang mudah dan cekap untuk mengubah warna berbilang sel secara serentak, seperti yang ditunjukkan di bawah:

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

Dengan menggunakan teknik ini, anda boleh melaksanakan sistem grid boleh disesuaikan dengan sifat warna boleh laras dengan cekap, memenuhi keperluan aplikasi editor piksel anda.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Struktur Grid untuk Editor Pixel Menggunakan Kaedah `drawImage()`?. 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
Artikel terbaru oleh pengarang
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!