C# - Exibindo imagens com PictureBox e usando o ProgressBar |
Neste artigo eu vou mostrar como exibir imagens em um controle PictureBox e também como usar o controle ProgressBar para indicar o progresso do carregamento das imagens. |
Este é um artigo para iniciantes que mostra como usar os controles PictureBox e ProgressBar em uma aplicação Windows Forms usando a linguagem C#.
PictureBox
O controle PictureBox é usado principalmente para exibir imagens de vários formatos (bitmap, metafile, ícones, JPEG, GIF ou PNG). através da propriedade Image.
Usando a propriedade SizeMode podemos ajustar o tamanho da imagem conforme abaixo:
AutoSize - O controle PictureBox é ajustado ao tamanho da imagem que ele contém;
CenterImage - A imagem é exibida no centro se o controle for maior que a imagem, caso contrário a imagem é colocada no centro do controle e as bordas externas são cortadas;
Normal - A imagem é colocada no canto superior esquerdo do controle. Se a imagem for maior que o controle ela será cortada;
StretchImage - A imagem é ampliada ou reduzida ajustando-se ao tamanho do controle;
Zoom - O tamanho da imagem aumenta ou diminui mantendo a proporção de tamanho;
As imagens podem ser carregadas a partir de uma fonte local ou da internet, de forma síncrona ou de forma assíncrona através das propriedades :
ProgressBar
O controle ProgessBar indica visualmente o progresso de uma operação com o passar de um intervalo de tempo. Você pode usá-lo em operações de cópia de arquivos , conexão com a internet , acesso a banco de dados , operações com registros de tabelas , etc.
A classe ProgressBar possui quatro propriedades que são comumente usadas e que não são herdadas do controle ou outra classe base.
Propriedade | Valor do Tipo | Descrição |
Maximum | Integer | O valor máximo do intervalo exibido no controle. O valor padrão é 100 - Read/Write. |
Minimum | Integer | O valor mínimo do intervalo exibido pelo controle. O valor padrão é 0. Read/Write. |
Step | Integer | A quantidade pela qual a barra de progresso é incrementada quanto o método PerformStep é chamado. Valor padrão é zero. Read/Write. |
Value | Integer | A posição atual da barra de progresso. O valor padrão é zero. Read/Write. |
Além destas propriedades o controle possui dois métodos que são geralmente usados:
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no VS Community
Abra o VS Community 2015 e clique em New Project;
Selecione a linguagem Visual C# e o template Windows Forms Application;
Informe o nome PictureBox_ProgressBar e clique no botão OK;
No formulário form1.cs inclua a partir da ToolBox os seguintes controles:
GroupBox - Imagem
PictureBox - picImagem
GroupBox - Ajuste de Tamanho
5 LinkLabels - lnklbAutoSize, lnklbCenterImage, lnklbNormal, lnklbStretchImage e lnklbZoom
GroupBox - Carregar Imagem
2 Buttons - btnLocal e btnInternet
2 RadioButtons - rdbNormal (Checked=True) e rdbAssincrono
1 ProgressBar - pgb1, Style= Continuous
1 Label - lblPgb1
Disponha os controles conforme o leiaute da figura a seguir:
Clique com o botão direito sobre o nome do projeto e a seguir clique em Add -> New Folder e informe o nome Imagens;
Inclua uma imagem nesta pasta que iremos carregar localmente para exibir no controle PictureBox - picImagem.
Neste exemplo eu vou carregar imagens remotamente da internet a partir do endereço : http://www.macoratti.net/Imagens
Carregando uma imagem Local a partir da propriedade Image
Vamos carregar uma imagem que esta na pasta Imagens do projeto de forma local usando a propriedade Image.
Selecione o controle PictureBox e na janela de propriedades (F4) clique na propriedade Image;
Na janela Select Resource marque Project resource file e clique no botão Import;
Selecione a pasta do projeto e a imagem que esta na pasta Imagens e clique no botão Abrir;
Ainda na janela de propriedades do controle PictureBox defina o valor da propriedade SizeMode como StretchImage;
O projeto em tempo de desenho deverá ser ficar conforme a figura abaixo:
Dessa forma quando o projeto for executado teremos sempre uma imagem local sendo
exibida.
Agora vamos definir a imagem que deverá ser carregada da internet.
Como exemplo eu vou usar a imagem do seguinte endereço : http://www.macoratti.net/Imagens/sjrpreto2.jpg que vemos a seguir:
Muito bem, agora vamos definir o código do formulário form1.cs.
1- Código para carregar Imagem Local - botão Normal
private void btnLocal_Click(object sender, EventArgs e)
{
if (rdbNormal.Checked == true)
picImagem.Load("../../Imagens/sjrpreto1.jpg");
else
picImagem.LoadAsync("../../Imagens/sjrpreto1.jpg");
}
|
Este código carrega a imagem sjrpreto1.jpg da pasta Imagens do projeto de forma normal ou assíncrona conforme a propriedade Checked do radiobutton (rdbNormal/rdbAssincrono) estiver marcado ou não.
2- Código para carregar Imagem da Internet - botão Internet
private void btnInternet_Click(object sender, EventArgs e)
{
if (rdbNormal.Checked == true)
picImagem.Load("http://www.macoratti.net/Imagens/sjrpreto2.jpg");
else
picImagem.LoadAsync("http://www.macoratti.net/Imagens/sjrpreto2.jpg");
}
|
Este código carrega a imagem sjrpreto2.jpg do endereço indicado de forma normal ou síncrono conforma a opção do radiobutton assinalada.
3- Código para exibir a barra de progresso usando o evento LoadProgressChanged do controle PictureBox
Selecione o controle PictureBox e no evento LoadProgressChanged inclua o código abaixo:
private void picImagem_LoadProgressChanged(object sender, ProgressChangedEventArgs e)
{
pgb1.Value = e.ProgressPercentage;
lblPgb1.Text = e.ProgressPercentage.ToString() + "%";
}
|
Este código atribuir o valor á barra de progresso e à label para indicar o percentual concluído.
4- Código do evento Click de cada um dos controles LinkLabel ajustando a propriedade PictureBoxSizeMode ao valor correspondente
private void lnklbAutoSize_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
picImagem.SizeMode = PictureBoxSizeMode.AutoSize;
}
private void lnklbCenterImage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
picImagem.SizeMode = PictureBoxSizeMode.CenterImage;
}
private void lnklbNormal_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
picImagem.SizeMode = PictureBoxSizeMode.Normal;
}
private void lnklbStretcImage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
picImagem.SizeMode = PictureBoxSizeMode.StretchImage;
}
private void lnklbZoom_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
picImagem.SizeMode = PictureBoxSizeMode.Zoom;
}
|
Agora é só alegria...
Executando o projeto e carregando uma imagem da internet de forma assíncrona, iremos obter:
Fique a vontade para alterar o projeto e incrementar novas funcionalidades.
Pegue o projeto completo aqui: PictureBox_ProgressBar.zip
(Disse Jesus aos seus
discípulos) : "Se vós fôsseis do mundo, o mundo amaria o que era seu, mas porque
não sois do mundo, antes eu vos escolhi do mundo, por isso é que o mundo vos
odeia."
João 15:19
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: