domingo, 25 de janeiro de 2009

Download Assíncrono com Silverlight 2

Acabo de concluir um novo exemplo com Silverlight 2. É uma aplicação muito simples e o tempo de implementação foi bastante baixo comparado ao que teria que ser feito para fazer semelhante em HTML.

Tenho uma tela e nela carrego uma imagem com tamanho bem grande (6750 x 4200, 5,84 MB). Ela é carregada assincronamente, após ser carregado o controle.
Image Hosted by ImageShack.us
De posse do evento DownloadProgress do objeto BitmapImage podemos mostrar o progresso do download. O DownloadProgressEventArgs nos dá a propriedade Progress, um número de 0 a 100 com o percentual de download feito.

    public Page()

    {

      // Required to initialize variables

      InitializeComponent();

      var image = new BitmapImage();

      image.DownloadProgress += (sender, e) =>

        {

          this.ProgressTextBlock.Text = e.Progress.ToString();

        };

      //Objeto Uri com o endereço da imagem

      image.UriSource = this.ImageObsoluteUri;

      this.DownloadedImage.Source = image;

    }

Como podemos ver, com Silverlight temos uma maneira bem fácil e prática de mostrar download de arquivos.

Aproveitei e coloquei a funcionalidade de Full Screen, onde pode ser visto que todo o componente foi feito para que suas proporções e posicionamentos não se alterassem de modo que ficasse destorcido. Quem trabalha com HTML sabe os problema que existem em deixar algo bem centralizado e organizado em qualquer browser. Quem quiser dar uma conferida, aqui está o link do exemplo on-line.

Nenhum comentário: