SWT 창 필터 의 느 린 전개 와 사라 짐

4773 단어 eclipsethread
이 필 터 는 어떤 이름 을 지어 야 좋 을 지 모 르 겠 지만 천천히 펼 치 거나 사라 지 는 것 이 라 고 합 니 다. 전체 효 과 는 종이 처럼 천천히 끌 어 내 거나 움 츠 러 듭 니 다.이 효과 의 실현 도 비교적 간단 하 다. 주로 셸 의 size 를 설정 함으로써 이 루어 진다. 보통 우 리 는 네 가지 효과 가 있다. 즉, 왼쪽 에서 오른쪽으로 천천히 보 여주 고 사라 지 며 오른쪽 에서 왼쪽으로 천천히 보 여주 고 사라 지 며 위 에서 아래로 천천히 보 여주 고 사라 지 며 아래 에서 위로 천천히 보 여주 고 사라 진다.다음은 다음 과 같다.
 
1. 왼쪽 에서 오른쪽으로 천천히 펼 치기
 
    이 효과 가 실 현 된 사고방식 은 셸 의 location 가 변 하지 않 는 다 는 것 이다. 처음에 셸 의 size 의 폭 을 0 으로 설정 하고 높이 가 변 하지 않 은 다음 에 셸 의 width 를 점차적으로 증가 시 켜 셸 의 느 린 열 림 을 실현 했다.코드 는 다음 과 같 습 니 다:
 
final int width = shell.getSize().x;
final int startX = shell.getLocation().x;
new Thread(new Runnable() {
    private int startWidth = 0;
    public void run() {
        while (startWidth <= width) {
            shell.getDisplay().syncExec(new Runnable() {
                public void run() {
	    shell.setSize(++ startWidth, shell.getSize().y);
                }
            });
            Thread.yield(); //   
        }
    }
}).start();

 
    모든 수 정 된 동작 을 하나의 Runnable 로 실행 합 니 다. while 순환 을 하나의 Runnable 에 두 고 실행 하 는 것 이 아니 라 Display 가 Runnable 을 실행 할 때 다른 응답 이 벤트 를 처리 하지 못 하여 전개 효과 가 원활 하지 않 습 니 다!또한, asyncExec 를 사용 하여 실행 하 더 라 도 같은 효과 입 니 다!
 
 
2. 오른쪽 에서 왼쪽으로 천천히 펼 치기
 
    오른쪽 에서 왼쪽으로 천천히 효 과 를 보 여 주 는 사고 와 왼쪽 에서 오른쪽으로 똑 같 습 니 다. 셸 의 location 을 동시에 설정 하 는 조작 을 추 가 했 을 뿐 입 니 다. 그래 야 우 리 는 오른쪽 에서 왼쪽으로 천천히 열 리 는 효 과 를 모 의 할 수 있 습 니 다.구현 코드 는 다음 과 같 습 니 다:
final int width = shell.getSize().x;
final int startX = shell.getLocation().x;
new Thread(new Runnable() {
    private int startWidth = 0;
    public void run() {
        while (startWidth <= width) {
            shell.getDisplay().syncExec(new Runnable() {
                public void run() {
	    shell.setSize(++ startWidth, shell.getSize().y);
                    shell.setLocation(startX + width - startWidth, shell.getLocation().y);
                }
            });
            Thread.yield();
        }
    }
}).start();

 
 
3. 왼쪽 에서 오른쪽으로 천천히 사라 진다
 
    천천히 사라 지 는 실현 방향 은 셸 의 size 를 점차적으로 바 꾸 는 것 이다. 왼쪽 에서 오른쪽으로 천천히 사라 지 는 것 은 셸 의 높이 가 변 하지 않 는 것 이다. width 는 원래 의 너비 에서 0 으로 점점 줄 어 들 고 셸 의 location 을 동기 화하 여 오른쪽 이 항상 같은 위치 에 있 도록 해 야 한다.코드 는 다음 과 같 습 니 다:
final int shellWidth = shell.getSize().x;
final int shellStartX = shell.getLocation().x;
new Thread() {
    private int width = shellWidth;
    private int startX = shellStartX;
    public void run() {
        while (width > 0) {
            shell.getDisplay().syncExec(new Runnable() {
                public void run() {
                    shell.setSize(-- width, shell.getSize().y);
                    shell.setLocation(++ startX, shell.getLocation().y);
                }
            });
            Thread.yield();
        }
    }
}.start();

  
     사라 진 후에 셸 을 닫 거나 이전 크기 와 위치 로 다시 복원 하 는 것 을 선택 할 수 있 습 니 다. 그러면 셸 이 시작 한 size 와 location 을 기록 해 야 합 니 다.
 
 
4. 오른쪽 에서 왼쪽으로 천천히 사라 진다
 
    오른쪽 에서 왼쪽으로 천천히 사라 지 는 것 보다 왼쪽 에서 오른쪽으로 천천히 사라 지 는 것 은 셸 을 다시 설정 하 는 location 작업 이 줄 어 들 었 을 뿐 코드 는 다음 과 같 습 니 다. 
final int shellWidth = shell.getSize().x;
final int shellStartX = shell.getLocation().x;
new Thread() {
    private int width = shellWidth;
    private int startX = shellStartX;
    public void run() {
        while (width > 0) {
            shell.getDisplay().syncExec(new Runnable() {
                public void run() {
                    shell.setSize(-- width, shell.getSize().y);
                }
            });
            Thread.yield();
        }
    }
}.start();

  
 
5. 위 에서 아래로 천천히 보이 기
 
    사 고 를 실현 하 는 것 은 셸 의 location 이 변 하지 않 고 셸 의 width 가 변 하지 않 으 며 셸 의 height 를 0 에서 셸 의 실제 높이 로 천천히 증가 시 키 면 된다.코드 도 간단 하 니 중복 쓰 지 않 고 여러분 스스로 쓰 세 요. 하하.
 
 
6. 위 에서 아래로 천천히 사라 진다
 
    실현 사 고 는 셸 의 width 가 변 하지 않 고 셸 의 height 를 원시 높이 에서 0 으로 점차적으로 바 꾸 는 것 이다. 또한 height 는 1 을 줄 일 때마다 location 의 y 를 1 로 증가 시 켜 셸 의 밑부분 이 항상 같은 위치 에 있 고 윗부분 은 점차적으로 아래로 이동 하여 효 과 를 실현 하 는 것 이다. 코드 약.
 
 
7. 아래 에서 위로 천천히 보이 기
 
    사 고 를 실현 하 는 것 은 셸 의 width 가 변 하지 않 고 높이 를 0 에서 원시 적 인 높이 로 점차적으로 바 꾸 는 동시에 셸 의 location 도 동기 화 시 켜 야 한다. 높이 가 1 이 증가 할 때마다 셸 의 location 의 y 는 1. 코드 약 을 줄인다.
 
 
8. 아래 에서 위로 천천히 사라 진다
 
    사 고 를 실현 하 는 것 은 셸 의 width 가 변 하지 않 고 height 를 원래 의 높이 에서 0 으로 천천히 줄 이 는 것 입 니 다. 그 location 은 변 하지 않 고 코드 는 약간 입 니 다.
 
 
    이상 은 셸 의 size 와 location 의 변 화 를 통 해 서서히 사라 지 거나 표시 되 는 효 과 를 실현 하 는 것 입 니 다. 이것 도 간단 한 창 필터 입 니 다.다음 에 SWT 창의 다른 효 과 를 계속 소개 할 것 입 니 다. 예 를 들 어 블라인드 의 열기 와 닫 기, 원형 사라 짐 과 표시 효과 등 입 니 다. -)

좋은 웹페이지 즐겨찾기