我想弄清楚如何拍攝圖像並使用Graphics2D來操縱它,同時能夠在同一圖像上執行多個操作(使它變暗兩次會使它變暗比做一次)。我發現的每一個例子都是爲了操作一次圖像並顯示它。我需要能夠多次顯示圖像。例如,假設我有一個包含選項1,2,3等的菜單,其中1個變暗,2個變亮,3個顯示圖像。使用Graphics2D操縱圖像多次
我該怎麼做到這一點?我可以得到圖像,使其變暗,旋轉並顯示它,但不能用菜單或用戶選擇何種方式的其他方式。如果有人可以將我鏈接到一個可以做到這一點的網頁,或者寫一個簡短的(更短的更好的),一個課程程序來做我所描述的,我應該能夠開始。
基本上,我需要能夠做這樣的事情:
initialize image;
display(image);
lighten(image);
我不明白,是我如何處理與Graphics2D的圖像,並將其應用到我的形象。
這是我迄今(主要來自here):
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(所有的操作),所以它不是在所有容易被操縱。有沒有辦法讓main設置的Graphics2D變量,然後以某種方式將它變成paintComponent()?我完全失去了如何去做這件事。
我試圖發佈鏈接到我查看的所有網頁,但它不會讓我發佈兩個以上的鏈接,因爲我是新手。
因此,我試圖通過編寫[this](http://pastebin.com/LutTz0p4)來做你所說的,但是,我沒有得到要顯示的圖像,只是一個空白的應用程序。 – Nathan
小心不要混淆圖像和緩衝區。在paintComponent()中,使用g.drawImage(),而不是g2d.drawImage()。也是主方法的最後一行,您正在將圖像繪製到屬於同一圖像的緩衝區,這可能會導致問題。爲渲染創建一個單獨的圖像緩衝區(不要使用與源圖像相同的圖像對象)。 – JimN
好吧,所以我在paintComponent()中有g.drawImage(),但我仍然不確定如何繪製旋轉的圖像。在改變paintComponent()並刪除我的main中的最後一行後,它只繪製常規圖像而不是旋轉圖像。 – Nathan