Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드스피츠
- Kotlin
- etag
- 클래스레벨밸리데이션
- 랜선아미안해
- brotli
- 개미수열
- 지뢰찾기
- 이렇게살아야되나자괴감이
- cache-control
- 지수반등
- LastModified
- cross parameter
- 브로틀리
- 알게뭐냐
- i18n
- kotliln
- jsr380
- Spring
- 워드프레스
- 리얼월드HTTP
- 스프링
- jsr303
- 알고리즘
- HTTP
Archives
- Today
- Total
취미개발 블로그와 마음수양
이미지 흩어뜨리기 ( 파워자바) 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package MyImageFrame1; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; import java.util.Random; import javax.imageio.*; import javax.swing.*; public class MyImageFrame1 extends JFrame implements ActionListener { BufferedImage img; private int pieces = 4; private int totalPieces = pieces * pieces; private int[] pieceNumber; public MyImageFrame1() { setTitle("Image Draw Test"); try { img = ImageIO.read(new File("space.jpg")); } catch (IOException e) { System.out.println(e.getMessage()); System.exit(0); } pieceNumber = new int[totalPieces]; for (int i = 0; i < totalPieces; i++) { pieceNumber[i] = i; } add(new MyPanel(), BorderLayout.CENTER); JButton button = new JButton("DIVIDE"); button.addActionListener(this); add(button, BorderLayout.SOUTH); setSize(600, 600); setVisible(true); } void divide() { Random rand = new Random(); int ri; for (int i = 0; i < totalPieces; i++) { ri = rand.nextInt(totalPieces); int tmp = pieceNumber[i]; pieceNumber[i] = pieceNumber[ri]; pieceNumber[ri] = tmp; } } class MyPanel extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); int pieceWidth = img.getWidth(null) / pieces; int pieceHeight = img.getHeight(null) / pieces; for (int x = 0; x < pieces; x++) { int sx = x * pieceWidth; for (int y = 0; y < pieces; y++) { int sy = y * pieceHeight; int number = pieceNumber[x * pieces + y]; int dx = (number / pieces) * pieceWidth; int dy = (number % pieces) * pieceHeight; g.drawImage(img, dx, dy, dx + pieceWidth, dy + pieceHeight, sx, sy, sx + pieceWidth, sy + pieceHeight, null); } } } } public static void main(String[] args) { new MyImageFrame1(); } public void actionPerformed(ActionEvent e) { divide(); repaint(); } } |
'Language > java소스' 카테고리의 다른 글
카운트 버튼으로 카운터 하는 프로그램 (0) | 2014.04.14 |
---|---|
자바 도형 그리기 예제 (0) | 2014.04.14 |
인터페이스를 이용하여 가장 키가 큰 녀석을 구하기 (0) | 2014.04.14 |
배열을 사용한 16진수의 문자열을 2진수로 변환 프로그램 (0) | 2014.04.13 |
배열 연습문제 풀어보기 = 배열 자리 예약 (0) | 2014.04.13 |