2011-07-04 3 views
1

나는 C#을 사용하여 Windows 응용 프로그램을 만듭니다. 이미지 (전체 데스크탑 화면)를 캡처하고 폴더에 저장해야하는 버튼이 있습니다. 또한 나는 이미지의 미리보기를 보여줄 필요가있다.이미지를 가져 와서 폴더에 저장하는 방법 [C# windows application]

+1

무엇이 문제입니까? 오류가 무엇입니까? 너 뭐 해봤 니? 당신의 질문은 단지 성명서 일뿐입니다. – Smudge202

+0

바탕 화면을 캡처하고 이미지를 폴더에 저장하는 방법은 무엇입니까? 링크에서 – Karthik

답변

3

Graphics.CopyFromScreen Method

샘플 코드 : 쇼 미리보기에 대한 같은

Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Size.Width, Screen.PrimaryScreen.Bounds.Size.Height); 
Graphics g = Graphics.FromImage(bmp); 
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size); 
g.Save(); 
bmp.Save("D:\\file.jpg", ImageFormat.Bmp); 

. IMO는 그걸 쓰려고 어렵지 않습니다.

+0

안녕하세요, Niko은 잘 도와 주셔서 감사합니다. – Karthik

+0

Nikko, 전체 해상도로 표시된 이미지를 저장하려면 어떻게해야합니까? –

+0

@RoyiNamir Cant는 Graphics.CopyFromScreen 메서드로 그렇게합니다.이 메소드는 화면의 일부를 목적지로 복사합니다. 디스플레이 된 이미지의 전체 해상도에 대한 지식이 없습니다. –

0

Interop dll을 일부 가져와야합니다.

다음을 확인하십시오 example은 스크린 샷을 캡처하고 디스크에 저장하는 방법을 잘 보여줍니다.

public void CaptureScreen(string fileName,ImageFormat imageFormat) 
{ 
    int hdcSrc = User32.GetWindowDC(User32.GetDesktopWindow()), 
    hdcDest = GDI32.CreateCompatibleDC(hdcSrc), 
    hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, 
    GDI32.GetDeviceCaps(hdcSrc,8),GDI32.GetDeviceCaps(hdcSrc,10));     GDI32.SelectObject(hdcDest,hBitmap); 
    GDI32.BitBlt(hdcDest,0,0,GDI32.GetDeviceCaps(hdcSrc,8), 
    GDI32.GetDeviceCaps(hdcSrc,10),hdcSrc,0,0,0x00CC0020); 
    SaveImageAs(hBitmap,fileName,imageFormat); 
    Cleanup(hBitmap,hdcSrc,hdcDest); 
} 

위의 예는 웹 사이트에서 가져온 것입니다. Perry Lee의 모든 코드

+1

는 u've은/* 저자 게시 : 페리 리를 * 제출 : 캡처 화면 * ** 제출 날짜 (프로그램 스크린 샷 기능 추가) : 12/29/03 ** */ 없음을 모든 DLL을로드해야합니다. 그 코드는 다소 쓸모가 없습니다. .net2.0 이상은 매우 편리합니다. –

+0

@Niko, true. 그물 넷은 먼 길을왔다. 넷. 넷은 더욱 더 향상된다. – Jethro

1

여기에 가져온 것을 수행하는 방법에는 여러 가지가 있습니다. Screen 클래스를 사용하면 인터넷에서 발견 된 몇 가지 간단한 샘플이 있습니다. 다른 사람들은 Direct3D를 사용하고 있습니다.

  1. TeboScreen: Basic C# Screen Capture Application;
  2. Capture a Screen Shot;
  3. C# – Screen capture with Direct3D;
  4. Capture DeskTop Screen;
  5. Enhanced Desktop Recorder in .NET using C# and Windows Forms; (아마도 귀하의 질문에 적합하지 않지만 추가 기능을 계획하는 경우 흥미로울 수 있습니다.)
  6. Capturing the Screen Image Using C#. 한마디로

는 생각은 Bitmap 오브젝트로 저장하고 파일에이 비트 맵을 저장하려면 Screen 클래스 또는 당신의 마음에 드는 방법을 사용하여 데스크탑의 이미지를 얻기로 구성되어 있습니다.

Bitmap 인스턴스를 만든 후에는 PictureBox이 필요하고 Image 속성을 설정하고 이미지를 볼 수 있도록 양식을 사용자에게 표시하면됩니다.

희망이 도움이됩니다. =)

+0

도움을 주셔서 감사합니다 – Karthik