2012-05-23 2 views
0

현재 양식의 PictureBox를 사용하여 이미지를 표시하는 C# 응용 프로그램을 코딩하고 있습니다.Picturebox의 이미지 업데이트

이제이 이미지를 일관되게 (예 : 2 초마다) 업데이트하고 싶습니다. 그러나 나는 이것을 할 수 없다.

새 이미지도/file과 같은 파일 디렉토리이기 때문에로드 된 원본 이미지를 대체하게됩니다. 그래서 내가 보여주고있는 이미지를 대체하고 싶을 때, "파일이 다른 프로그램에 의해 사용되고 있습니다 ... 등등."

기본적으로 PictureBox를 사용하여 이미지를로드하려고하는데이 이미지는로드 된 이미지가 디렉토리에서 변경 될 때 일관되게 업데이트됩니다.

이것이 가능합니까? C#에서이 작업을 수행 할 수있는 다른 방법이 있습니까? 사전에

감사합니다, Perumal

답변

1

스트림이 닫혀 있지 것처럼 소리. 이미지를로드 한 후에 stream.close();에 전화를 걸어보십시오. 다음과 같이 이미지를로드하는 경우 Image i = new Image(File.Open("blub.png")); 다음과 같이 약간 재 작성해야합니다.

FileStream fs = File.Open("blub.png"); 
Image img = new Image(fs); 
fs.Close(); 
fs.Dispose(); 
0

그냥 두 개의 서로 다른 파일 이름을 (아래 예에 timeImageChange이라고 함) 타이머를 사용하여 파일의 이름을 바꿉니다. 그럼 당신은 뭔가를 가질 수

bool imageALoaded = true; 
timerImageChange.Interval = 2000; 
timerImageChange.Enabled = true; 

private void timerImageChange_Tick(object sender, EventArgs e) 
{ 
    if (imageALoaded) 
    { 
     this.pictureBox1.Image = imageB; 
     imageALoaded = false; 
    } 
    else 
    { 
     this.pictureBox1.Image = imageA; 
     imageALoaded = true; 
    } 
} 

이것은 당신이 원하는대로 할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

0

가장 좋은 해결책은 실행 파일을 사용하는 것입니다. 볼륨 섀도 복사본이라고합니다. 이것은 실제로 당신이 사용중인 파일을 복사 할 수 있도록 백업을 위해 Windows에서 사용됩니다. 실제로 C# 코드없이이 도구를 사용해 보았지만 코드에서 사용하기 쉽습니다. 여기

이 링크입니다 : http://www.howtogeek.com/howto/windows-vista/backupcopy-files-that-are-in-use-or-locked-in-windows/

내 생각이 다른 이름을 가진 파일의 복사본을 만들고 해당 파일을 액세스하고 후 다음 부하를 삭제하는 것입니다, 나는 당신을위한 최선의 접근 방법을 참조하십시오.

관련 문제