gpt4 book ai didi

java - 如何将图像向左(或向右)移动?

转载 作者:行者123 更新时间:2023-12-04 05:08:56 25 4
gpt4 key购买 nike

我正在编写一个 Java 程序来处理图像。

现在我需要将我的图像向左移动 n pixels .我可以使用 Graphics.setClip(Shape) 剪切具有形状的图像功能。但我无法将其移动到左对齐。

[编辑] 抱歉缺少上述问题的信息。

我有一个图像,并像这样在 Canvas 上绘制它:

@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, this);
}

我需要将我的图像向左移动 n pixels在我的 Canvas 上(这样我可以在移动后在右侧的地方画一些新的东西)。

image before shifting
enter image description here

这是一个例子。图一为原图,图二为平移后的图。
请告诉我我该怎么做。

谢谢大家!

最佳答案

一种方法是使用 BufferedImage.getSubimage(x,y,w,h) .

import java.awt.*;
import java.awt.image.BufferedImage;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;

class ImageCrop {

public static void main(String[] args) throws Exception {
URL url = new URL("http://i.stack.imgur.com/enifS.jpg");
final BufferedImage image = ImageIO.read(url);
int x = 43;
final Image crop = image.getSubimage(x, 0, image.getWidth()-x, image.getHeight());
Runnable r = new Runnable() {

@Override
public void run() {
JPanel gui = new JPanel(new BorderLayout(4,4));

gui.add(new JLabel(new ImageIcon(image)), BorderLayout.LINE_START);
gui.add(new JLabel(new ImageIcon(crop)), BorderLayout.LINE_END);

JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}

当然,更简单的方法是改:
@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, this);
}

至:
@Override
public void paint(Graphics g){
g.drawImage(image, -43, 0, this);
}

关于java - 如何将图像向左(或向右)移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133925/

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