2011-09-16 2 views
9

나는이 패널에 배경으로 컨테이너 패널 안에 그림이있는 패널을 가지고 있습니다. 컨테이너 패널 내에 배경 정보가있는 다른 패널이 있습니다. 레이블은 정보가 시간에 따라 변하고 내가 원하는 것은 새로운 정보가 표시 될 때의 전환이고 오래된 정보로 정보 패널을 페이드 아웃 한 다음 새로운 정보로 같은 패널에서 사라지게하는 것입니다. 정보 패널을 페이드 아웃 할 때 컨테이너 패널의 배경 그림을 볼 수 있습니다. 두 패널 모두 BorderStyle = FixedSingle을 가지며 정보 패널도 배경색을 가지고 있습니다.C를 사용하여 내용이있는 패널을 페이드 인/아웃하는 방법 #

이제 내 질문은 : 정보 패널과 전체 콘텐츠를 페이드 인/아웃하는 방법이 있습니까?

웹에서 검색 중이 었는데이 효과에 대한 패널의 배경색 작업 방법을 찾았지만 배경색 속성이 희미 해지기 때문에 전혀 작동하지 않으며 그 밖에도 내용이 그대로 남아 있습니다. :

Timer tm = new Timer(); 
    private void Form1_Shown(object sender, EventArgs e) 
    { 
     tm.Interval = 100; 
     tm.Tick += new EventHandler(timer1_Tick); 
     tm.Enabled = true; 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     int aa = 0; 
     panel2.BackColor = Color.FromArgb(aa, 255, 0, 0); 

     aa += 10; 
     if (aa > 255) 
      tm.Enabled = false; 
    } 

아무 도움이됩니다.

+0

내가 WPF에 대해 잘 모르지만, 그것이 당신을위한 옵션 인 경우가 더 나은 선택이 될 수있다 당신이 찾고있는 효과를 얻을 수 있습니다. http://en.wikipedia.org/wiki/Windows_Presentation_Foundation –

+0

예, WPF에서는 시간이 지남에 따라 패널의 불투명도를 변경하는 애니메이션을 만듭니다. –

+1

당신이 직면하게 될 문제는 불투명도가 컨트롤 레벨이 아닌 폼 레벨에서만 사용 가능하다는 것입니다. 어쩌면 똑똑한 해킹을 통해 패널 위에 오버레이 된 양식에 동일한 이미지를 만들고 opactiy가 100 %에 이르면 양식을 숨길 수 있습니다. WinForms이 잘되지 않습니다. – LarsTech

답변

3

개별 컨트롤의 불투명도를 설정할 수 있다고 생각하지 않습니다. 양식 자체에는 불투명도가 있지만 전체 컨트롤을 페이드 아웃하고 싶지는 않습니다. 이 컨트롤이 걸리는 사각형 영역에 노력하고 있기 때문에 (이 구현이 패널 내 자식 컨트롤에 적용 할 생각 http://www.slimee.com/2009/02/net-transparent-forms-and-controls-with.html

: 당신은 투명도를 지원하는 사용자 정의 컨트롤을 만들 수 있습니다

는 ... 여기 예입니다 쪽으로). 내가 틀렸다면, 당신은 지나친 행동의 일부로 모든 자식 컨트롤을 처리해야 할 것입니다.

다른 사람들이 말했듯이 '부드럽게 보이게'하는 것이 많은 작업 일 수 있습니다. 희망을 갖고 누군가가 더 나은 대답을 갖기를 바랍니다.

+0

나는 당신의 대답에 감사한다. 나는이 앱의 의도가 큰 TV에 대시 보드를 가지고있다. 거기에 정보가 제 시간에 나타나기 때문에 시각 효과를 사용하여 시청자에게 좋은 경험. 아마도 나는 이것을하기위한 또 다른 도구를 찾아야 할 것입니다. – Somebody

2

다른 답변에서 제안한 것처럼 패널을 페이드 인/아웃 할 수 없습니다.

시작할 때 양식을 페이드 인하거나 페이드 아웃하거나 모달 대화 상자 양식을 페이드 인 또는 페이 아웃 아웃시킬 수 있습니다.

페이드

private void FadeIn_Tick(object sender, EventArgs e) 
    { 
     this.Opacity += .08; 
     if (this.Opacity >= 1) 
     { 
      FadeIn.Stop(); 
     } 
    } 

페이드 아웃

private void FadeOut_Tick(object sender, EventArgs e) 
    { 
     this.Opacity -= .08; //Decrease opacity 
     if (this.Opacity <= 0) //While it is not 0 
     { 
      FadeOut.Stop(); //Stop! 
      this.Close(); //Close the form 
     } 
    } 
+0

MisdartedPenguin에게 답해 주셔서 감사하지만 귀하의 솔루션은 귀하가 말한 것처럼 양식에만 적용됩니다. – Somebody

+0

이것은이 질문에 대한 해결책이 아닙니다. 근처에도 안 –

관련 문제