Pergunta

  1. Eu quero criar uma lista de rolagem de imagens obtido a partir da internet e dar ao usuário a capacidade de clicar nele. Como faço para ir sobre fazê-lo em WinForms / C #? É possível adicionar controle picturebox / controles para a caixa de listagem?

  2. Eu tentei adicionar uma lista de picturebox em UserControl com AutoScroll conjunto para true, o que vai me dar uma sensação como o uso de uma caixa de listagem, é uma abordagem correta?

  3. Eu também tentei definindo o ImageLocation do pictureBox a um URI da imagem e, em seguida, chamado Load () para carregar a imagem, ele fez o trabalho, no entanto a minha forma está congelando-se! Como faço para ir sobre como atualizar cada um dos picturebox de um modo sequencial sem congelar minha forma?

Obrigado, Azlam

Foi útil?

Solução

Eu vou responder a sua terceira questão em primeiro lugar, becuase que é a única que eu realmente sei a resposta. Há um método LoadAsync () na caixa de imagem que irá carregar a imagem em um segmento separado e não irá travar a sua aplicação.

Quanto às outras questões, também eu provavelmente começar com um controle de usuário e colocar as imagens lá. A única coisa que posso sugerir seria primeiro criar um controle de usuário que tem uma caixa de imagem, e talvez uma caixa de texto de várias linhas ou richtextbox ao lado dele. Desligue a fronteira na caixa de texto, e têm uma ligeira borda em torno de todo o controle. Isso permitirá que você para exibir a imagem, com algum texto ao lado dele. Então, seu controle final efectivo vai ser apenas uma coleção desses controles com a capacidade de adicionar-los quando necessário.

- meus 2 centavos ...

Outras dicas

Você se importa de rolagem vertical?

Gostaria de começar com o controle DataGridView como uma base e criar a seguinte aplicação:

1) Criar coluna personalizada e CellType decorrente DataGridViewImageColumn. Você poderia chamá-los de "CronosNetImageColumn", "CronosNetImageCell".

2) Crie uma classe "CronosImageDetails" para conter os dados celulares (inclui propriedades para texto de exibição e URL da imagem). Isso vai ser passado como o valor para cada célula. Ex:

ImageGrid.Rows.Add (novas CronosImageDetails {ExibirTexto = "Day at the Beach", ImageURL = "http: //...beach.jpg"});

3) Substituir a Tinta celular () para usar um WebClient para obter a imagem e usar e.Graphics.DrawImage (ImageObtainedFromWebClient) para pintar a imagem para a célula. Você poderia usar e.Graphics.DrawString ((CronosImageDetails) value.DisplayText, ...) para sobrepor o texto na célula.

Esta solução rápida que você obtenha um imagelist de rolagem que carrega apenas imagens como o usuário rola a lista e fornece uma base sólida para a melhoria.

recomendados otimizações adicionais:

A) Criar um bitmap backbuffer e gráficos para o desenho de dados celulares.

B) Pintura Setup () para simplesmente pintar o backbuffer em vez de fazer o trabalho para obter a imagem

C) criar um novo método LoadImage célula () que gera um novo segmento que baixa a imagem e tintas de TI para o tampão para trás.

D) têm de pintura () (ou um fio auxiliar separado) controlar a direcção e a aceleração de rolagem e estimativa de que as células têm de ser pré-carregado. Gatilho LoadImage () nessas células.

E) inicializar o tampão para trás de cada uma das células uma imagem de carga com.

F) Pista e utilizar os dados empíricos das vezes imagem de carga para ajudar a determinar quais as células têm de ser pré-carregado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top