gpt4 book ai didi

java - 使用 Graphics2D 多次处理图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:39 29 4
gpt4 key购买 nike

我正在尝试弄清楚如何拍摄图像并使用 Graphics2D 对其进行操作,同时能够对同一图像执行多项操作(因此将其变暗两次会使它比一次更暗)。我发现的每一个例子都是为了处理一次图像并显示它。我需要能够多次显示图像。例如,假设我有一个包含选项 1、2、3 等的菜单,1 使它变暗,2 使它变亮,3 显示图像。

我将如何实现这一目标?我可以获得图像,将其变暗,旋转并显示它,但不能通过菜单或用户选择时间和内容的其他方式。如果有人可以将我链接到一个网页,或者写一个简短的(越短越好),一个类程序来完成我所描述的,我应该能够开始。

基本上,我需要能够做这样的事情:

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() 中?我完全不知道该怎么做。

我试图发布我浏览过的所有网页的链接,但它不允许我发布超过两个链接,因为我是新手。

最佳答案

如果您需要在内存中操作图像,请创建一个 BufferedImage,然后调用 BufferedImage.createGraphics() 以访问图形对象以绘制到图像的缓冲区中。

当您想将该图像渲染到 UI 中的组件上时,请像您所做的那样使用该组件的 paintComponent() 方法。请注意,这涉及两个单独的图形对象,用于两个不同的目的。

关于java - 使用 Graphics2D 多次处理图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809885/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com