3

同じ画像に対して複数の操作を実行しながら、画像を取得して Graphics2D を使用して操作する方法を見つけようとしています (したがって、2 回暗くすると、1 回行うよりも暗くなります)。私が見つけたすべての例は、画像を一度操作して表示することを目的としています。画像を複数回表示できるようにする必要があります。たとえば、オプション 1、2、3 などのメニューがあり、1 で暗くし、2 で明るくし、3 で画像を表示するとします。

どうすればこれを達成できますか?画像を取得し、暗くし、回転させて表示することはできますが、ユーザーがいつ、何を選択するかをメニューやその他の方法で指定することはできません。誰かがそれを行うウェブページに私をリンクしてくれたり、私が説明したことを実行するための短い (短い方が良い) 1 つのクラス プログラムを書いてくれたりしたら、私は始めることができるはずです。

基本的に、次のようなことができる必要があります。

initialize image;
display(image);
lighten(image);

私が理解していないのは、Graphics2D を使用して画像を操作し、それを画像に適用する方法です。

これは私がこれまでに持っているものです(主にここから):

import java.awt.*;
import javax.swing.*;

@SuppressWarnings("serial")
public class ShowImage extends JPanel {
Image img;

        public ShowImage() {
            super();
            img = Toolkit.getDefaultToolkit().getImage("image.png");
        }

        public void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.translate(170, 0);
            g2d.rotate(1);
            g2d.drawImage(img, 0, 0, this);
        }

        public static void main(String arg[]) {
            JFrame frame = new JFrame("Image Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(600, 400);

            ShowImage panel = new ShowImage();
            frame.setContentPane(panel);
            frame.setVisible(true);
    }
}

現在、すべての操作を paintComponent() で行っているため、操作が簡単ではありません。Graphics2D 変数をメインに設定し、それを paintComponent() に何らかの方法で取得する方法はありますか? これをどのように行うかについて、私は完全に迷っています。

表示したすべての Web ページへのリンクを投稿しようとしましたが、新しいので 2 つ以上のリンクを投稿できません。

4

1 に答える 1

1

メモリ内の画像を操作する必要がある場合は、BufferedImageを作成してから、BufferedImage.createGraphics()を呼び出して、画像のバッファに描画するためのグラフィックスオブジェクトにアクセスします。

その画像をUIのコンポーネントにレンダリングする場合は、そのコンポーネントのpaintComponent()メソッドを使用します。これには、2つの異なる目的で使用される2つの別個のグラフィックスオブジェクトが含まれることに注意してください。

于 2012-10-09T23:53:32.487 に答える