어떻게 Windows Form 으로 창 에 간단 한 애니메이션 효 과 를 추가 합 니까?

창 을 표시 하거나 숨 길 때 윈도 API 의 AnimateWindow 함 수 를 이용 하여 특수 한 효 과 를 낼 수 있 습 니 다.주요 애니메이션 유형 은 네 가지 가 있 습 니 다.스크롤,슬라이드,접 기 또는 펼 치기 와 알파 혼합 그 라 데 이 션 입 니 다.
창 애니메이션 효과
먼저 애니메이션 도구 클래스 를 정의 하고 AnimateWindow 함 수 를 도입 합 니 다.

 public class WindowsEffects
 {
  public const int AW_ACTIVATE = 0x00020000; //     。   AW_HIDE     。
  public const int AW_BLEND = 0x00080000; //       。      hwnd        。
  public const int AW_CENTER = 0x00000010; //      AW_HIDE,           ;      AW_HIDE,        。           。
  public const int AW_HIDE = 0x00010000; //	    。     ,       。
  public const int AW_HOR_POSITIVE = 0x00000001;//	             。              。  AW_CENTER AW_BLEND     ,     。
  public const int AW_HOR_NEGATIVE = 0x00000002;//	             。              。  AW_CENTER AW_BLEND     ,     。
  public const int AW_SLIDE = 0x00040000;//	       。     ,      。  AW_CENTER     ,        。
  public const int AW_VER_POSITIVE = 0x00000004; //	        。              。  AW_CENTER AW_BLEND     ,     。
  public const int AW_VER_NEGATIVE = 0x00000008; //	             。              。  AW_CENTER AW_BLEND     ,     。

  [DllImport("user32.dll", CharSet = CharSet.Auto)]
  public static extern int AnimateWindow(IntPtr hwand, int dwTime, int dwFlag);
 }
창 이 왼쪽 에서 오른쪽으로 펼 쳐 집 니 다.

Form2 animateForm;

private void button1_Click(object sender, EventArgs e)
{
 animateForm = new Form2();
 WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_HOR_POSITIVE);
}
왼쪽 위 에서 오른쪽 아래 까지 창 을 엽 니 다.

private void button2_Click(object sender, EventArgs e)
{
 animateForm = new Form2();
 WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_HOR_POSITIVE ^ WindowsEffects.AW_VER_POSITIVE);
}
중심 에서 창 펼 치기

private void button3_Click(object sender, EventArgs e)
{
 animateForm = new Form2();
 WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_CENTER);
}
창 페 이 드 인

private void button4_Click(object sender, EventArgs e)
{
 animateForm = new Form2();
 WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_BLEND);
}
창 페이드아웃

private void button5_Click(object sender, EventArgs e)
{
 animateForm = new Form2();
 animateForm.Show();
 WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_HIDE ^ WindowsEffects.AW_BLEND);
 animateForm.Close();
}
함수 에 대한 소개
AnimateWindow 함수 User32.dll 에서 Windows 2000 까지 최소 지원
참고:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-animatewindow

BOOL AnimateWindow(
 HWND hWnd, //           。           。
 DWORD dwTime, //           ,      。  ,          200  。
 DWORD dwFlags //      。                。  ,     ,            。         ,   AW_HIDE              。
);
dwFlags 매개 변수 값 목록
명칭.
값.
속뜻
AW_ACTIVATE
0x00020000
창 을 활성화 합 니 다.AW 에 있 지 마 세 요.HIDE 에서 이 값 을 사용 합 니 다.
AW_BLEND
0x00080000
페 이 드 효과 사용.이 플래그 는 hwnd 가 최상 위 창 일 때 만 사용 할 수 있 습 니 다.
AW_CENTER
0x00000010
AW 를 사용 했다 면HIDE 는 창 을 안 으로 접 는 것 처럼 보이 게 합 니 다.AW 를 사용 하지 않 았 다 면HIDE 는 창 을 밖으로 펼 칩 니 다.서로 다른 방향 표 지 는 효과 가 없다.
AW_HIDE
0x00010000
창 숨 기기.기본적으로 창 이 표 시 됩 니 다.
AW_HOR_POSITIVE
0x00000001
창 을 왼쪽 에서 오른쪽으로 애니메이션 효 과 를 냅 니 다.이 플래그 는 스크롤 이나 슬라이드 애니메이션 에 사용 할 수 있 습 니 다.AWCENTER 또는 AWBLEND 를 함께 사용 할 때 무시 합 니 다.
AW_HOR_NEGATIVE
0x00000002
오른쪽 에서 왼쪽으로 창 을 애니메이션 효과 가 있 습 니 다.이 플래그 는 스크롤 이나 슬라이드 애니메이션 에 사용 할 수 있 습 니 다.AWCENTER 또는 AWBLEND 를 함께 사용 할 때 무시 합 니 다.
AW_SLIDE
0x00040000
슬라이드 애니메이션 을 사용 합 니 다.기본적으로 스크롤 애니메이션 을 사용 합 니 다.AWCENTER 가 함께 사용 할 때 이 플래그 는 무 시 됩 니 다.
AW_VER_POSITIVE
0x00000004
위 에서 아래로 애니메이션 창.이 플래그 는 스크롤 이나 슬라이드 애니메이션 에 사용 할 수 있 습 니 다.AWCENTER 또는 AWBLEND 를 함께 사용 할 때 무시 합 니 다.
AW_VER_NEGATIVE
0x00000008
아래 에서 위로 창 을 애니메이션 효과 가 있 게 합 니 다.이 플래그 는 스크롤 이나 슬라이드 애니메이션 에 사용 할 수 있 습 니 다.AWCENTER 또는 AWBLEND 를 함께 사용 할 때 무시 합 니 다.
AnimateWindow 방법 호출 에 성공 하면 0 이 아 닌 값 을 되 돌려 주 고 호출 에 실패 하면 0,즉 false 를 되 돌려 줍 니 다.다음 상황 에서 호출 실패 할 수 있 습 니 다:
  • 창 이 보이 고 이 창 을 표시 하려 고 합 니 다
  • 창 이 숨겨 져 있 으 면 창 을 숨 기 려 고 합 니 다.
  • 슬라이드 나 스크롤 애니메이션 의 방향 을 지정 하지 않 았 다 면..
  • 시도 용 AWBLEND 애니메이션 하위 창 일 때..
  • 스 레 드 에 창 이 없 으 면.이 예 에서 AnimateWindow 는 실 패 했 지만 GetLastError 는 ERROR 로 돌아 갑 니 다.SUCCESS。GetLastError 방법 을 통 해 오류 에 대한 정 보 를 더 얻 을 수 있 습 니 다.
  • 또한 다음 과 같은 문 제 를 주의해 야 한다.
  • 특수 효 과 를 사용 하지 않 고 창 을 표시 하거나 숨 기 려 면 쇼 윈도 우 를 사용 하 십시오.
  • 4.567917.슬라이드 를 사용 하거나 애니메이션 을 굴 릴 때 방향 을 지정 해 야 합 니 다.그것 은 AW 일 수 있다.HOR_POSITIVE、AW_HOR_NEGATIVE、AW_VER_POSITIVE 또는 AWVER_NEGATIVE。
    AWHOR_POSITIVE 또는 AWHOR_NEGATIVE 와 AWVER_POSITIVE 또는 AWVER_NEGATIVE 가 조합 되 어 대각선 으로 창 을 애니메이션 합 니 다.
  • 창 과 하위 창의 창 과정 은 모든 WM 를 처리 해 야 합 니 다.PRINT 또는 WMPRINT CLIENT 메시지.대화 상자,컨트롤,유 니 버 설 컨트롤 은 WM 을 처리 할 수 있 습 니 다.PRINTCLIENT。기본 창 프로 세 스 처리 WMPRINT。
  • 4
  • 만약 에 키 창 이 부분 을 자 르 는 것 을 표시 하면 애니메이션 일 때 구멍 이 잘 립 니 다.
  • AnimateWindow 는 RTL 창 을 지원 합 니 다.
  • 이상 은 윈도 우즈 폼 으로 창 에 간단 한 애니메이션 효 과 를 추가 하 는 방법 에 대한 상세 한 내용 입 니 다.윈도 우즈 폼 에 애니메이션 효 과 를 추가 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기