PictureBox 컨트롤에서 이미지 값으로 사용한 애니메이션 GIF가 탐색기에서 표시되는 것보다 느리게 표시되는 문제가 있습니다.
C # Winforms를 사용하고 있습니다.
여기서 문제는 일부 프레임이 실행 중에 건너 뛴다는 것입니다.
누군가이 문제를 확인하고 해결책을 가질 수 있습니까?
My Picture Box는 Preloading 용이며 Background Thread에서 완벽하게 작동합니다.
GIF에서 프레임을 하나씩 읽고 자체 제작하여 picturebox에 애니메이션을 적용 할 수 있습니까?
감사!
이 코드를 사용하십시오. 초당 25 프레임이 표시되므로 타이머를 40으로 설정했습니다. 즉, 40 밀리 초마다 한 프레임을 의미합니다. (1000ms / 25 frames = 40ms)
1 단계.이 방법은 사용 방법을 보여줍니다.
static Image[] images;
int frameCount = 0;
private void Btn_Click(object sender, EventArgs e)
{
//get gif image
object ezgif_com_video_to_gif = Resources.ResourceManager.GetObject("ezgif_com_video_to_gif");
images = getFrames((Image)ezgif_com_video_to_gif);//convert to frames array
//show frames
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 40;
timer.Elapsed += Timer_Elapsed;
timer.Start();
}
2 단계. 타이머 틱 추가
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
pictureBox1.Image = images[frameCount];
frameCount++;
if (frameCount > images.Length - 1)
frameCount = 0;
}
3 단계. gif를 프레임으로 변환
Image[] getFrames(Image originalImg)
{
int numberOfFrames = originalImg.GetFrameCount(FrameDimension.Time);
Image[] frames = new Image[numberOfFrames];
for (int i = 0; i < numberOfFrames; i++)
{
originalImg.SelectActiveFrame(FrameDimension.Time, i);
frames[i] = ((Image)originalImg.Clone());
}
return frames;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다