ホームページ >Java >&#&チュートリアル >正確な色操作のために Java でピクセル化されたグリッドを作成する方法

正確な色操作のために Java でピクセル化されたグリッドを作成する方法

DDD
DDDオリジナル
2024-10-27 15:16:29693ブラウズ

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

Java でピクセル グリッドを作成する

意欲的なピクセル編集者にとって、正確な色操作を可能にするグリッド システムを設計するのは困難な場合があります。ただし、Java には、プロセスを合理化できるいくつかの便利なコンポーネントが用意されています。

グリッド セルとしての JButton

最初は、JButton をグリッド セルとして使用するのは非効率的に見えるかもしれません。個々のセルを変更することは可能ですが、多数のセルを操作する場合は面倒になります。

代替グリッド実装

より効果的な解決策は、drawImage() メソッドを利用することです。マウス座標をスケールします。この手法は、グリッドのような動作を維持しながら、より大きな「ピクセル」を作成します。

サンプル コード

次のコードは、このアプローチを示しています。

<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>

使用法

  1. アイコン名 (例: "Tree.closedIcon") を渡す Grid オブジェクトを作成します。
  2. グリッドを JFrame に追加します。
  3. アプリケーションを実行します。

結果

グリッドが表示され、ユーザーはピクセル化された画像上でマウスを移動しながら色情報を取得できます。各セル。

以上が正確な色操作のために Java でピクセル化されたグリッドを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。