這是一篇入門級文章,高手請略過。
在這篇文章中我們將學習如何用 Java 對圖像進行剪裁併將剪裁出來的部分單獨保存到文件中。
我們將通過以下步驟來學習:
接下來我們開始編碼部分。
Listing1: 引入的類
01 | import java.awt.Graphics; |
02 | import java.awt.Rectangle; |
03 | import java.awt.Robot; |
04 | import java.awt.event.MouseEvent; |
05 | import java.awt.event.MouseListener; |
06 | import java.awt.event.MouseMotionListener; |
07 | import java.awt.image.BufferedImage; |
08 | import java.io.File; |
09 | import javax.imageio.ImageIO; |
10 | import javax.swing.JFrame; |
說明:
現在我們編寫包含 main 方法的入口類
Listing2: 入口類
1 | public class CropImage extends JFrame implements MouseListener, MouseMotionListener |
2 | { |
3 | int drag_status= 0 ,c1,c2,c3,c4; |
4 | public static void main(String args[]) |
5 | { |
6 | new CropImage().start(); |
7 | } |
說明:
接下來是 start 方法
Listing 2
01 | public void start() |
02 | { |
03 | ImagePanel im= new ImagePanel( "F:\\Wallpaper\\wallpapers\\1.jpg" ); |
04 | add(im); |
05 | setSize( 400 , 400 ); |
06 | setVisible( true ); |
07 | addMouseListener( this ); |
08 | addMouseMotionListener( this ); |
09 | setDefaultCloseOperation(EXIT_ON_CLOSE); |
10 | } |
說明:
下面我們定義用於處理滑鼠事件的方法
Listing 3: 滑鼠事件處理函數
01 | @Override |
02 | public void mouseClicked(MouseEvent arg0) { |
03 | } |
04 |
05 | @Override |
06 | public void mouseEntered(MouseEvent arg0) { |
07 | } |
08 |
09 | @Override |
10 | public void mouseExited(MouseEvent arg0) { |
11 | } |
12 |
13 | @Override |
14 | public void mousePressed(MouseEvent arg0) { |
15 | repaint(); |
16 | c1=arg0.getX(); |
17 | c2=arg0.getY(); |
18 | } |
19 |
20 | @Override |
21 | public void mouseReleased(MouseEvent arg0) { |
22 | repaint(); |
23 | if (drag_status== 1 ) |
24 | { |
25 | c3=arg0.getX(); |
26 | c4=arg0.getY(); |
27 | try |
28 | { |
29 | draggedScreen(); |
30 | } |
31 | catch (Exception e) |
32 | { |
33 | e.printStackTrace(); |
34 | } |
35 | } |
36 | } |
37 |
38 | @Override |
39 | public void mouseDragged(MouseEvent arg0) { |
40 | repaint(); |
41 | drag_status= 1 ; |
42 | c3=arg0.getX(); |
43 | c4=arg0.getY(); |
44 | } |
45 |
46 | @Override |
47 | public void mouseMoved(MouseEvent arg0) { |
48 |
49 | } |
50 |
51 | public void paint(Graphics g) |
52 | { |
53 | super .paint(g); |
54 | int w = c1 - c3; |
55 | int h = c2 - c4; |
56 | w = w * - 1 ; |
57 | h = h * - 1 ; |