Windows Form (C #)에서 애니메이션 GIF를 표시하는 방법
상당히 긴 프로세스 실행으로 진행 메시지를 보여주는 양식이 있습니다. 웹 서비스에 대한 호출이므로 진행률 표시 줄에 전체 백분율을 의미있게 표시 할 수는 없습니다. (진행률 표시 줄의 선택 윤곽 속성이 특히 마음에 들지 않습니다)
프로세스에 일부 활동의 느낌을주기 위해 애니메이션 GIF를 표시하고 싶습니다 (예 : Windows 복사 프로세스와 같은 한 컴퓨터에서 다른 컴퓨터로 파일이 날아가는 파일).
어떻게합니까?
너무 어렵지 않습니다.
- 양식에 그림 상자를 놓습니다.
- 그림 상자에 .gif 파일을 이미지로 추가
- 로드 할 때 그림 상자를 표시하십시오.
고려해야 할 사항 :
- 그림 상자를 비활성화하면 GIF 애니메이션이 표시되지 않습니다.
애니메이션 GIF :
애니메이션 GIF를 찾고 있다면 여기에서 생성 할 수 있습니다.
그것을하는 또 다른 방법 :
내가 잘 작동하는 또 다른 방법은 코드 프로젝트 에서 찾은 비동기 대화 상자 컨트롤입니다.
나는 같은 문제가 있었다. 백그라운드에서 작동하는 긴 작업으로 인해 전체 형식 (gif 포함)이 다시 그려지지 않습니다. 여기에 내가 이것을 해결 한 방법이 있습니다.
private void MyThreadRoutine()
{
this.Invoke(this.ShowProgressGifDelegate);
//your long running process
System.Threading.Thread.Sleep(5000);
this.Invoke(this.HideProgressGifDelegate);
}
private void button1_Click(object sender, EventArgs e)
{
ThreadStart myThreadStart = new ThreadStart(MyThreadRoutine);
Thread myThread = new Thread(myThreadStart);
myThread.Start();
}
이 작업을 담당 할 다른 스레드를 만들었습니다. 이 초기 형식 덕분에 문제없이 계속 다시 그릴 수 있습니다 (gif 작업 포함). ShowProgressGifDelegate 및 HideProgressGifDelegate는 gif가있는 pictureBox의 visible 속성을 true / false로 설정하는 형식의 대리자입니다.
Windows에서는 일반적으로 애니메이션 GIF를 사용하지 않지만 AVI 애니메이션은 거의 사용하지 않습니다. Windows 기본 컨트롤은 표시 할뿐입니다. 애니메이션 GIF를 AVI로 (또는 그 반대로) 변환하는 도구도 있습니다.
PictureBox 컨트롤에 넣으면 작동합니다.
동일한 스레드에 있기 때문에 모든 것이 중지되기 때문에 긴 작업을 시작하지 않아도됩니다.
나는 같은 문제가 있었고 여러 가지 다른 문제에 직면했던 것을 구현함으로써 다른 솔루션을 발견했습니다. 마지막으로, 아래는 다른 게시물의 일부 조각을 모아서 예상대로 작동했습니다.
private void btnCompare_Click(object sender, EventArgs e)
{
ThreadStart threadStart = new ThreadStart(Execution);
Thread thread = new Thread(threadStart);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
PictureBox 컨트롤을 호출하는 Execution 메서드는 다음과 같습니다.
private void Execution()
{
btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = true; });
Application.DoEvents();
// Your main code comes here . . .
btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = false; });
}
PictureBox는 속성 창에서 보이지 않거나 아래에서 수행하십시오.
private void ComparerForm_Load(object sender, EventArgs e)
{
pictureBox1.Visible = false;
}
참고 URL : https://stackoverflow.com/questions/165735/how-do-you-show-animated-gifs-on-a-windows-form-c
'programing tip' 카테고리의 다른 글
파이썬 : 출력 문자열 형식, 오른쪽 정렬 (0) | 2020.06.27 |
---|---|
Mockito를 사용하여 모의 객체에서 확인 된 예외를 throw하십시오. (0) | 2020.06.26 |
WebGL 및 three.js 학습 (0) | 2020.06.26 |
메시지와 함께 인덱싱 정지 : 일괄 업데이트로 인해 인덱싱이 일시 중지되었습니다 (0) | 2020.06.26 |
열 이름으로 사용 된 예약어를 어떻게 이스케이프합니까? (0) | 2020.06.26 |