Capture a captura de canvas usando o .NET

Duplicar Possível:
Como posso capturar a canvas em um bitmap?

Eu preciso fazer um aplicativo que captura um instantâneo da canvas atual sempre que um determinado botão é atingido.

Eu pesquisei muito, mas só encontrei como capturar a janela atual.

Você pode por favor me ajudar a descobrir como fazer isso no .net?

Podemos fazer isso manualmente pressionando a canvas de impressão e salvando a imagem usando a tinta. Eu preciso fazer a mesma coisa, mas eu quero fazer isso com um programa.

É certamente possível capturar uma captura de canvas usando o .NET Framework. A maneira mais simples é criar um novo object Bitmap e desenhar nele usando o método Graphics.CopyFromScreen .

Código de amostra:

 using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)) using (Graphics g = Graphics.FromImage(bmpScreenCapture)) { g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, bmpScreenCapture.Size, CopyPixelOperation.SourceCopy); } 

Advertência: este método não funciona corretamente para janelas em camadas. A resposta de Hans Passant aqui explica o método mais complicado necessário para obter aqueles em suas capturas de canvas.