Pergunta

Estou desenvolvendo um WinForms c # 3.0 aplicação. Nosso designer criou um monte de .ico arquivos contendo toda a arte necessária. A escolha de Ico foi feita porque, muitas vezes, a mesma imagem é necessária em vários lugares em diferentes dimensões.

Agora, parece .ico são realmente chato de usar no estúdio visual. A única maneira de usar essas imagens parece ser através da lista de imagens (que não são suportados por todos os controles). Em comparação com outros recursos, você não pode escrever isso:

foo.Image = global::RFQHUB.RFQHUBClient.Properties.Resources.foo; //    Cannot implicitly convert type 'System.Drawing.Icon' to 'System.Drawing.Image'  

Aqui estão as opções que eu estou considerando:

  • criar ImageLists de todos os tamanhos possíveis referenciando todos os meus ícones na minha janela principal. Vincular esses ImageLists de outras janelas e encontrar uma maneira de objetos de exportação de imagem do ImageList quando eu não posso usá-lo diretamente; desde ImageList contém um método Draw (), isso provavelmente deve ser possível.
  • converter todo o x.ico eu tenho em vários x16.gif ... x48.gif, e usá-las por meio de recursos.

Eu estaria interessado em saber se algumas pessoas têm sido sucesso usando .ico recursos em um aplicativo WinForm. Em sim, como você configurar as coisas?

Foi útil?

Solução

ICO não é completamente um formato obsoleto, mas é perto. É ainda útil para o seu ícone do aplicativo, mas para quase tudo o resto, é melhor usar um ImageList para cada tamanho que você precisa. E é muito mais rápido para preencher uma ImageList a partir de um bitmap que contém várias imagens em que deitei em uma grade.

Você também pode querer usar um canal alfa transparência em seus bitmaps para obter o melhor resultado, então armazená-los como arquivos PNG em seus recursos é o melhor caminho a percorrer, uma vez PNG suporta um canal alfa. arquivos de ICO e GIF suportam apenas um único bit de transparência - cada pixel é ou totalmente opaco ou totalmente transparente. Um canal alfa de 8 bits de transparência parece muito mais agradável.

Se você pode enviar seu artista volta à prancheta de desenho, então você deve fazê-lo, e que ele / ela fazer imagens completas anti-aliasing com alfa. Se você não puder, então eu sugiro que você escrever um pequeno programa para converter todos os seus arquivos de ícone em bitmaps adequados para carregar no ImageLists.

Outras dicas

Converter as imagens em PNG. Ponto. Quem decidiu usar .ico para começar deve se falou no privado -. O argumento detém nenhum terreno

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