스윙 기반 이미지 그림자 효과

2368 단어 swingBlog
키워드: 스윙, 그림자 효과,Graphics2D,GradientPaint,translate,scale,rotate
그림처럼 스윙된 그림자 효과
프로그램을 더욱 잘 이해하기 위해 먼저Graphics2D의 몇 가지 중요한 방법을 소개한 다음에 점차적인 변화를 제어하는 클래스GradientPaint를 책임진다.
하나.Graphics2D의 세 가지 중요한 방법
translate(int x, int y);그래픽 객체를 변환(dx,dy)합니다.
scale(double sx, double sy);이 메서드는 좌표 원점을 기준으로 그래픽 객체의 크기를 조정합니다.값은 음수 값으로 좌표 축에 따라 대칭을 나타낼 수 있습니다.
rotate(double theta); 이 메서드는 좌표 원점을 중심으로 그래픽 객체를 회전합니다.
둘.GradientPaint 클래스의 역할
GradientPaint는 Java2D에서 점차적인 변화를 제어하는 클래스로 선형 색 점차적인 모드로 Shape를 채우는 방법을 제공합니다.그 구조 함수인GradientPaint(float x1,float y1,Color color1,float x2,float y2,Color color2)는 점(x1,y1)에서 점(x2,y2)으로 점차적인 변화를 진행하는 역할을 충분히 설명한다.자세한 내용은 기사 참조:
http://javapub.iteye.com/blog/781482
셋.거울 효과의 사고방식
1. 먼저 메모리 공간을 개척하여 새로운 그림을 저장하는데 사용한다. 새 그림의 사이즈는 넓이가 원 그림과 같고 높이는 원 그림의 두 배이다.
BufferedImage result = new BufferedImage(image.getWidth(), height * 2,
				BufferedImage.TYPE_INT_ARGB);

2. 새 그림의 상단에 원시 그림을 그린다

//      。
g2.drawImage(image, 0, 0, null);
//     。

3. 새 그림의 중간에 검은색 선을 긋고 검은색 선의 너비는 두 픽셀이다

g2.setColor(Color.black);
g2.setStroke(new BasicStroke(2));
g2.drawLine(0, 346, 600, 346);

4. 새 그림의 아랫부분에 대칭 그림을 그린다

g2.scale(1.0, -1.0);
g2.drawImage(image, 0, -2 * height, null);
g2.scale(1.0, -1.0);

5. 새 그림의 하반부에 점차적인 변화를 설정하고,
여기서 그라데이션 값을 수정하여 다른 그라데이션 효과를 얻을 수 있습니다.예를 들어 그래디언트의 부분, 범위 등을 설정합니다.

//         。
g2.translate(0, height);
GradientPaint mask;
mask = new GradientPaint(0, 0, new Color(1.0f, 1.0f, 1.0f, 1.0f), 0,
				height, new Color(1.0f, 1.0f, 1.0f, 0.0f));
g2.setPaint(mask);
g2.setComposite(AlphaComposite.DstIn);
g2.fillRect(0, 0, image.getWidth(), height);

6. 구성 요소의paintComponent 방법을 호출하여 그림을 그립니다

protected void paintComponent(Graphics g) {
		Graphics2D g2 = (Graphics2D) g;

		g2.translate(20, 20);
		g2.drawImage(image, 0, 0, null);
		g2.translate(-20, -20);
	}

넷.원본 코드
첨부 파일은 완전한 프로그램입니다.

좋은 웹페이지 즐겨찾기