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:

  1. AutoSize - O controle PictureBox é ajustado ao tamanho da imagem que ele contém;

  2. 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;

  3. Normal - A imagem é colocada no canto superior esquerdo do controle. Se a imagem for maior que o controle ela será cortada;

  4. StretchImage - A imagem é ampliada ou reduzida ajustando-se ao tamanho do controle;

  5. 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:

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:


José Carlos Macoratti