Tag Archives: Delphi

Como criar um ícone transparente de alta resolução para uso no Delphi 7

Este tutorial requer que você saiba o básico de edição de imagens (selecionar, recortar, redimensionar, etc). Eu não vou entrar em muitos detalhes aqui.

Para tornar o fundo da imagem transparente

Para este tutorial eu vou usar a imagem de uma engrenagem que pode ser obtida aqui. Eu recortei antes de começar o tutorial o que não era necessário para mim, o que incluía a sombra.

Usando o Paint.Net (estou usando a versão 4.2.1), selecione a região a tornar transparente. Usando a ferramenta Varinha Mágica, por exemplo, você usa SHIFT+CLICK para selecionar mais de uma região e reduz a Tolerância (indicada pela seta) se o corte automático estiver invadindo uma região que não deve. No exemplo abaixo dei um clique para selecionar a região externa e outro para selecionar a região no centro da imagem:

PaintNet_MagicWand_automalabs.com.br

Tecle DEL para apagar a região selecionada. O Paint.Net já mostrará que está definido como transparente usando o padrão xadrez característico.

PaintNet_TransparentCog_automalabs.com.br

Agora salve como PNG.

Se você precisa criar uma transparência mais complexa, pode usar o plugin Cut Color

Uma alternativa online ao Paint.Net para a criação da transparência está aqui.

Converter o arquivo PNG para ICO usando o Icon Workshop

Obs.:

  • Neste tutorial eu estou usando o Icon Workshop 6.53;
  • É possível que o Icon Workshop tenha ferramentas embutidas para definir a transparência sem precisar de ferramentas extras, mas nesse momento eu não sei como fazer e por isso usei o Paint.Net;
  • Tenha me mente que um arquivo ICO é uma coleção de imagens. Ele pode conter apenas uma, mas também pode conter muitas, que são selecionadas pelo Windows de acordo com a necessidade.

Você precisa abrir o arquivo PNG no Icon Workshop (IW). Isso pode ser feito de diversas maneiras:

  • CTRL-G para a busca de mídia;
  • Clicando no botão Browse;
  • ou arrastando a imagem para a janela do IW.

iconWorkshop_ImageLoaded_automalabs.com.br
Na janela onde aparece a imagem, clique no ícone no canto superior esquerdo. Aquele que tem um “I”:

IconWorkshop_ConvertToIco

O IW te mostrará todas as opções de criação para Windows:

 

IconWorkshop_AsNewIcon_automalabs.com.br

Se você vai usar sua aplicação em um sistema do Windows Vista em diante, marque a caixa indicada pela primeira seta.

Se o PNG for salvo dentro do ICO (um arquivo ICO é uma coleção de imagens) como compressed PNG o Delphi não poderá usá-lo e poderá até não conseguir compilar mais, acusando erro RLINK32: Out Of Memory. Então você precisa desmarcar a caixa apontada pela seta inferior.

Clique em OK, a imagem aparecerá no IW agora como um conjunto de imagens:

IconWorkshop_IconePronto_automalabs.com.br

Atente para as miniaturas. Se alguma (geralmente a primeira) exibir um símbolo de compressão alguma coisa deu errado e a imagem ainda está como PNG Compressed. Clique com o botão direito sobre a miniatura e desmarque a opção indicada.

IconWorkshop_PNGCompressed_automalabs.com.br

Agora você já pode salvar o ícone e carregá-lo no Delphi 7.

 

Não consegue usar o Icon Workshop?

Existem ferramentas online como icoconvert.com que fazem a criação do ícone para você. Se você fizer o upload do PNG do nosso exemplo e escolher a opção “ICO for Windows 7, Windows 8, Vista and XP” o site te devolverá um arquivo ICO com 5 imagens (256×256, 48×48, 32×32, 24×24 e 16×16, todas RGB/A). Porém a primeira imagem está comprimida e o ICO será incompatível com a compilação no Delphi 7. Você poderá, entretanto, carregar esse ícone manualmente no arquivo EXE da aplicação usando o Resource Hacker.

Já se você escolher Custom sizes -> Multi sizes e selecionar apenas as opções 48×48, 32×32, 24×24 e 16×16 (abrir mão do ícone de 256×256) o resultado poderá ser compilado pelo Delphi 7.

Postado em Informação | Tags: , | Deixe um comentário

Delphi: Como atualizar a área de trabalho programaticamente

Se você estiver experimentando novos ícones para a sua aplicação pode ser enganado pelo fato do Windows manter um cache com os ícones apresentados no desktop e assim os ícones nos atalhos podem permanecer os mesmos até pelo menos o Windows ser reiniciado.

Para forçar o Windows a recarregar todos os ícones, acrescente shlobj na seção USES do form e dê o seguinte comando:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);

Você deverá notar o desktop “piscar”.

Testado com Delphi 7 e Windows 8.1 64 bits.

 

Postado em Informação | Tags: , | Deixe um comentário

Delphi 7: Erro RLINK32 Out Of Memory ao tentar trocar um ícone

Abra o ícone que você está tentando inserir no Icon Workshop ou outro editor de ícones e verifique se uma ou mais das imagens (um arquivo .ICO pode conter várias) não está em um formato comprimido como “PNG Compressed”. Se estiver, desmarque a opção, salve e recarregue o ícone no Delphi. Isso é suportado pelo Windows Vista em diante mas o Delphi 7 não sabe como manipular.

Postado em Informação | Tags: , | 1 Comment