Introdução
Esse post abordará a criação de uma simples aplicação que tira um printscreen e salva o mesmo em um local escolhido pelo desenvolvedor, ou simplesmente um windows forms screenshot C#.
This post shows how to create a simple application to take/shot a screenshot (print screen) and save it.
Criando o formulário
Altere a propriedade Name para principalForm
Adicione um controle Button da toolbox
Altere a propriedade Name do Button para btnShot e a propriedade Text para Shot
De dois clicks no Button para criar o evento Click
Nesse momento seu formulário deve estar parecido com este:
O Código
Inclua os using:
using System.Threading;
using System.Drawing.Imaging;
Crie uma variável no escopo global que fará a contagem dos screenshots tirados para que não sobreecreva nenhum arquivo.
Dentro do evento Click do nosso botão entre com o código para tirar o screenshot.
// Declara uma variável para fazer a contagem dos screenshots private int nScreenshot = 0; private void btnShot_Click(object sender, EventArgs e) { // Cria os objetos necessários Bitmap bmpScreenshot; Graphics gfxScreenshot; // Esconde o form para ele não aparecer no screenshot // Hide the form so that it does not appear in the screenshot this.Hide(); // Espera um tempo para garantir que o form escondeu // Wait a second Thread.Sleep(1000); // Seta o obejto bitmap com o tamanho da tela // Set the bitmap object to the size of the screen bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); // Cria um objeto graphics a partir do bitmap // Create a graphics object from the bitmap gfxScreenshot = Graphics.FromImage(bmpScreenshot); // Tira o screenshot do canto superior esquerdo até o canto inferior direito // Take the screenshot from the upper left corner to the right bottom corner gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); // Salva o screenshot no local indicado e no formato esolhido // Save the screenshot to the specified path bmpScreenshot.Save("teste" + nScreenshot + ".png", ImageFormat.Png); // Exibe o form this.Show(); // Incrementa o contador para que o próximo screenshot não sobrescreva o anterior. nScreenshot++; }
Melhorias
É possivél fazer com que a aplicação tire o screenshot sem ser necessário clicar no botão.
É possvél criar uma série de configurações para que o usuário acerte o acreenshot do jeito que preferir. Configurações como por exemplo o formato a ser tirado o screenshot, o local onde será salvo, o nome da imagen e etc.
_____
Não esqueça de deixar seu comentário, critica, elegio, dúvida e etc. Ele é muito importante para a melhoria do blog.
Comments on: "C# – Screenshot" (9)
Ola Guilherme!
Pegando carona neste post…………
No meu form eu tenho um botao.
Este botao liga o timer().
Como fazer para este botao ligar e desligar o timer mudando de cor e texto?
silvio pontes
Silvio, o que fiz foi criar uma variável que fará o controle do toogle button. A variável Value apenas serve aqui para mostrar o valor do timer em um label.
private Boolean Clicked = false;
private Int32 Value = 0;
private void button1_Click(object sender, EventArgs e)
{
Clicked = !Clicked;
if (Clicked)
{
button1.Text = "Rodando";
button1.BackColor = Color.Red;
timer1.Enabled = true;
}
else
{
button1.Text = "Parado";
button1.BackColor = Color.Green;
timer1.Enabled = false;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = Value++.ToString();
}
Estou elaborando o tuto para o zedgraph.
Funcionou uma beleza Guilherme; estava fazendo isso com 2 botões.
Agora veja só, para te ajudar no tuto, montei um passo a passo de como baixar e instalar o ZedGraph no VS2010, também estou fazendo um passo a passo de instalação no sharpdevelop: http://sharpdevelop.net/opensource/sd/ . Vou colocar isso no Youtube e no meu blog, ok?
Como fazer para o grafico ja estar funcionando ao chamar a aplicação?
private void zedGraphControl1_onLoad(object sender,EventArgs e)
{…….}?
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/602f6dfb-a177-49d7-9016-e02e73e9209b
Na resposta acima você mencionou PointPairList!
Eu tenho:
string varch2m=textBox5.Text.Substring(3,5);
int varch2mint=Convert.ToInt32(varch2m);
//textBox7.AppendText(varch2mint.ToString()+”\n”);
listBox2.Items.Add(varch2mint);
string varch7m=textBox5.Text.Substring(9,5);
int varch7mint=Convert.ToInt32(varch7m);
//textBox8.AppendText(varch7mint.ToString()+”\n”);
listBox3.Items.Add(varch7mint);
string varch10m=textBox5.Text.Substring(15,5);
int varch10mint=Convert.ToInt32(varch10m);
//textBox9.AppendText(varch10mint.ToString()+”\n”);
listBox4.Items.Add(varch10mint);
Como eu devo inserir os int varch2mint, varch7mint e varch10mint no PointPairList?
Lembrando que não devem ficar muito perto para que as datas e horas possam ser legiveis.
Respeitosamente,
silvio pontes
[…] C# – Screenshot […]
[…] C# – Screenshot […]
[…] C# – Screenshot […]
Valeu !!!
[…] C# – Screenshot […]
Bom dia, estou iniciando com sharpdevelop e gostaria de uma força; um passo a passo de como gerar o executável a partir de um solução ja criada.De já obrigado.