2010-02-19 3 views
2

데스크톱 가제트 (시계)로 조작하고 있습니다. 투명 효과가 필요한 리플렉션 효과가 있습니다. CopyFromScreen을 사용하여 배경을 얻은 다음 양식 배경을 설정합니다. 이제내 앱에서 사용중인 파일을 삭제해야합니다.

 Rectangle bounds = this.Bounds; 

     using (Bitmap ss = new Bitmap(bounds.Width, bounds.Height)) 
     using (Graphics g = Graphics.FromImage(ss)) 
     { 
      this.Opacity = 0; 

      g.CopyFromScreen(this.Location, Point.Empty, bounds.Size); 
      ss.Save(@"C:\clock1s\bg", ImageFormat.Png); 

      this.Opacity = 100; 
      this.BackgroundImage = new Bitmap(@"C:\clock1s\bg"); 

      g.Dispose(); 
     } 

, I (예 : 시계를 이동) 내가 그 파일을 삭제할 수 아니에요 또는 다시를 사용할 때마다 :

그래서 (는 "도크/해제"버튼의 일부)처럼 현재 사용 중이기 때문에 다시 저장하십시오. 이미 다른 형식으로 BG를 설정하려고 시도했지만 작동하지 않았습니다.

어떻게해야합니까?

편집 : 감사합니다 (Lance McNearney).

이제 을 저장하면 어떻게됩니까? 또한

, 보너스 질문 :

the goddamn batwatch http://upload.snelhest.org/images/100219batwatch.jpg

형태 아래에 끝나는 선택하고 아이콘 사소한 성가심, 그리고 내가 아래 상단에 종료하거나하는 중 하나를하고 싶습니다 가능하면 (유지 부드러운 앤티 앨리어싱). 나는 그것을 해결할 내 leauge의 방법이라고 가정하고 있어요.

답변

6

정말로 이미지를 파일 시스템에 저장해야합니까? 귀하의 응용 프로그램에 대해서만 메모리에 저장할 수 있습니까? (더 이상 문제가 없을 것입니다)? (나는 분명히을 테스트하기 위해 컴파일 할 수 있지만)

MemoryStream 코드에서 파일 경로에 대한 드롭 인 교체로 작동합니다 :

Rectangle bounds = this.Bounds; 

using (Bitmap ss = new Bitmap(bounds.Width, bounds.Height)) 
using (Graphics g = Graphics.FromImage(ss)) 
{ 
    this.Opacity = 0; 
    g.CopyFromScreen(this.Location, Point.Empty, bounds.Size); 

    using(MemoryStream ms = new MemoryStream()) { 
     ss.Save(ms, ImageFormat.Png); 

     this.Opacity = 100; 
     this.BackgroundImage = new Bitmap(ms); 
    } 

    g.Dispose(); 
} 
+0

뜨아합니다. 감사. 답변을 나중에 표시하면 사람들이 두 번째 부분에 대해 의견을 말하게 할 수 있습니다. – pastapockets

관련 문제