Как сдвинуть изображение влево (или вправо)?
Я пишу программу Java, которая делает некоторые вещи с изображениями.
Теперь мне нужно переместить изображение влево n pixels
. Я могу вырезать изображение с фигурой, используя функции Graphics.setClip(Shape)
.Но я не могу переместить его в левое положение.
[EDIT] извините за отсутствие информации по вышеуказанному вопросу.
У меня есть образ, и я рисую его на холсте вот так:
@Override
public void paint(Graphics g){
g.drawImage(image, 0, 0, this);
}
Мне нужно переместить мое изображение влево n pixels
на моем холсте (чтобы я мог нарисовать что-то новое на месте с правой стороны после меняющийся).
Вот пример. Изображение 1-Исходное, второе-после сдвига. Пожалуйста, скажите мне, как я могу это сделать.
Спасибо всем!
1 ответ:
Один из способов-использовать
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); }