Svgiconimagelist
Três motores para renderizar SVG (Delphi Image32, Skia4delphi, Wrapper Direct2D) e quatro componentes para simplificar o uso de imagens SVG (redimensionar, fixo, escala de cinza ...)
Versão oficial real 4.3.0 (VCL+FMX)
| Componente | Descrição |
|---|
 | TSVGICONIMAGECOLLECTION é a coleção de imagens SVG para Delphi fornecer uma lista centralizada de imagens para svgiconvirtualImagelists (apenas para VCL) |
 | TSVGICONVirtualImagelist é uma lista de imagelistas "virtuais" especiais para Delphi ligada a uma SVGICONIMAGECOLECÇÃO (SOMENTE PARA VCL) para simplificar o uso de ícones SVG (redimensionar, opacidade, escala de cinza e mais ...) |
 | O TSVGICONIMAGE é um componente de imagem estendido para Delphi (VCL+FMX) para mostrar qualquer imagem SVG diretamente ou incluída em um svgiconimagelista com toda a funcionalidade (alongamento, opacidade, escala de cinza e muito mais ...) |
 | TSVGICONIMAGELIST é um imagelista estendido para Delphi (VCL+FMX) com uma coleção de imagens SVG incorporada. Use este componente para simplificar a substituição do ImageList para aplicativos Delphi mais antigos e obtenha a escala automática de ícones! |
Agora você pode pesquisar e baixar ícones diretamente da web!
Na versão 4.3, um serviço integrado está agora disponível no editor de componentes para baixar ícones SVG da web, através da API fornecida pelo IConify.Design.
Agora você pode selecionar "Adicionar da Web" no editor de componentes: um novo formulário para pesquisar e baixar na Web está disponível para plataformas VCL e FMX.

Leia a página do Wiki para entender como baixar facilmente os ícones SVG da web e incluí -los no SVGICONIMAGELIST ou SVGICONIMAGECOLECÇÃO.
Aviso importante
Da versão 4.0, o TSVGICONVirtualImagelist herda do TVirTualImagelist (usando o Delphi 10.3 para o mais recente). Para as versões anteriores de Delphi, o TSVGICONVirtualImagelist herda da TSVGICONIMAGELISTBASE .
Uma diferença importante é que um tvirtualImagelist possa usar e criar apenas um subconjunto das imagens da coleção.
Embora o TVirTualImagelist padrão não tenha as propriedades FILLCOLOR, GRYSCALE, APPLOTOOTONLY e OPACIDADE, essas propriedades existem no TSVGICONIMAGECOLECÇÃO e elas se refletiriam sobre o Link TVirtualImagelist, mas se você alterar essas propriedades no nível de coleta, todas as alterações virtualsagelas!
For this reasons, now TSVGIconVirtualImageList have also FixedColor, GrayScale, ApplyToRootOnly and Opacity properties, so you can setup those properties only at VirtualImageList level, and you can share the same TSVGIconImageCollection from many VirtualImageList with different poperties, as you can see in the new SVGIconVirtualImageListDemo.
Por esse motivo, se você estiver usando esses componentes do Delphi 10.3, a combinação recomendada deve ser TSVGICONIMAGECOLECTION + TSVGICONVIRTUALIMAGELIST .
Não se esqueça também da importância dos preservadores quando você tiver uma grande base de imagens com muitas ações vinculadas. Sem definir esta propriedade como "True", toda vez que você adiciona ou remove um ícone na coleção, você deve verificar e alterar o ImageIndex de todas as ações.
Outro recurso disponível na versão Delphi 10.4 é que o tsvgicoNimagecollection herda do Tcustomimagecollection, para que você também possa usá -lo com o componente TVirTualImage e colocar os ícones SVG no componente TControllist, conforme explicado aqui ...
Escolha o seu mecanismo SVG preferido!
Existem três implementação:
Delphi Image32 nativo (padrão), usa a biblioteca Image32 por Angus Johnson
Usando a biblioteca skia4delphi , uma API de gráficos 2D de plataforma cruzada baseada na biblioteca de gráficos Skia do Google
Um invólucro para a implementação nativa do Windows Direct2D
Você pode ler mais detalhes aqui.
Comparação de desempenho
Esta tabela mostra o desempenho dos três motores de renderização testados com o SVGEXPlorer, usando uma quantidade significativa de ícones de diferentes conjuntos, renderizados a 128x128 pixels.
| Contar | Conjunto de ícones | Image32 | D2d | Skia4delphi |
|---|
| 997 | Fonte-incrível | 1265ms | 1453ms | 1172ms |
| 654 | Papirus | 2750ms (1) | 937ms | 1266ms (1) |
| 5366 | Design de material | 11015ms | 12001ms | 10688ms |
Como você pode ver, os três motores têm um desempenho diferente, dependendo dos ícones e de sua complexidade.
(1) Observe que Image32 e Skia4Delphi são os únicos motores capazes de renderizar o efeito do desfoque (que sempre é lento para calcular): esse é o motivo do desempenho "lento" para renderizar ícones de papirus que contêm efeito desfoque.
Disponível em Delphi Xe3 a Delphi 12 (plataformas VCL e FMX)

Links relacionados: Embarcadero.com - LearnDelphi.org
Exemplo de imagem da versão VCL

Exemplo de imagem da versão FMX (Windows)

Exemplo de imagens do editor VCL SVGText-Property (VCL e FMX)


Utilitários
A demonstração do visualizador SVG é útil para verificar a qualidade da renderização dos motores disponíveis.
O utilitário SVG Icon Explorer é útil para explorar e visualizar suas coleções de imagens SVG.
Você pode usar extensões de shell SVG se quiser ver seus ícones diretamente no Windows Explorer ou desejar editá -los usando um poderoso editor de texto SVG .
DOCUMENTAÇÃO
Siga o guia na seção wiki para saber como usar esses componentes para modernizar seus aplicativos Delphi VCL ou FMX Windows escaláveis, coloridos e bonitos com poucas linhas de código.
Outra biblioteca semelhante
Um projeto semelhante feito pela ETEA for Icon Fontes: https://github.com/etheadev/iconfontsimagelist
Notas de liberação
26 de novembro de 2024: versão 4.3.0 (VCL+FMX)
- Atualizado para Image32 4.6 Lançado 26 de novembro de 2024 para corrigir o texto do desenho de emissão dentro do SVG
- Namespace adicionado a todos os usos
- Adicionado pacote svgiconimagelistrestclient
- Nova opção no editor de componentes para selecionar ícones da Web (VCL e FMX)
- Demos atualizados
17 de outubro de 2024: versão 4.2.1 (VCL+FMX)
- Atualizado para Image32 4.6 Lançado em 16 de outubro de 2024 para corrigir algum problema de desenho
12 de outubro de 2024: versão 4.2.0 (VCL+FMX)
- Atualizado para Image32 4.6 Lançado em 12 de outubro de 2024 para corrigir algum problema de desenho
- Adicionados componentes Informações sobre a tela Sobre e Splash
14 de setembro de 2024: versão 4.1.9 (VCL+FMX)
- Alinhado à imagem32 4.5 versão de 14 de setembro de 2024
- Erro de intervalo corrigido Renderizando alguns ícones (mecanismo Image32)
- Ícone de renomear fixo no Firemonkey Imagelist Editor
- Pacotes AggiorNento Delphi 12.2
27 de agosto de 2024: versão 4.1.8 (VCL+FMX)
- Alinhado à imagem32 4.5 versão de 18 de agosto de 2024
- Renderização fixa com opacidade para os motores Skia4Delphi e D2D
13 de agosto de 2024: versão 4.1.7 (VCL+FMX)
- Pacotes atualizados para compilação com skia4delphi (definido por svgiconimagelist.inc)
- Usos fixos para a unidade de skia
- Alinhado à imagem32 4.5 versão de 11 de agosto de 2024
18 de julho de 2024: versão 4.1.6 (VCL+FMX)
- Alinhado à imagem32 4.5 versão de 17 de julho de 2024
- Cor fixa de ícones no Android
- Adicionado Definir para usar a caixa de diálogo OpenPicture antigo no editor de componentes.
22 de maio de 2024: versão 4.1.5 (VCL+FMX)
- Fixo TSVGICONIMAGELISTBASE.ASSIGN
- Registro de TSVGICONIMAGECOLECTION fixado para projetos FMX
- Alinhado à versão Image32 de 14 de maio de 2024
05 de maio de 2024: versão 4.1.4 (VCL+FMX)
- Alinhado ao último imagem32 ver. 4.4
19 de abril de 2024: versão 4.1.3 (VCL+FMX)
- Alinhado à última imagem32
- Compilação fixa com Macosx
- Suporte adicionado ao Delphi 12.1
08 de janeiro de 2024: versão 4.1.2 (VCL+FMX)
- Alinhado à última imagem32
- Adicionado copy svg à caixa de transferência na caixa de diálogo "Exportar para PNG"
- Direitos autorais atualizados
09 de novembro de 2023: versão 4.1.1 (VCL+FMX)
- Alinhado ao skia4delphi 6.0.0
- Adicionado componentes FMX a toda a plataforma
- Demonsibras fixas para Delphi 12
- Adicionada opção svgdisableEngineHint
03 de setembro de 2023: versão 4.1.0 (VCL+FMX)
- Biblioteca Alinhada Imagem32 Lançada em 03/09/2023
- Demo fixo (removido "obsoleto" SVGColor usa)
- Suporte adicionado ao Delphi 12.1
24 de agosto de 2023: versão 4.0.0 (VCL+FMX)
- Removido antigo motor "nativo" tsvg
- Atualizado para Skia4delphi ver. 6.0.0
- TsvgiconvirtualImagelist herda do TVirTualImagelist (de D10.3 à versão real).
- Adicionado svgiconvirtualImagelistDemo para testar vários tsvgiconvirtualimagelista da mesma forma
- Adicionado suporte para Delphi 12
28 de fevereiro de 2023: versão 3.9.6 (VCL+FMX)
- Atualizado para Image32 ver. 4.4 (30 de janeiro de 2023)
- Atualizado para Skia4delphi ver. 4.1.1 (26 de fevereiro de 2023)
13 de janeiro de 2023: versão 3.9.5 (VCL+FMX)
- Copyright atualizado 2023
- Atualizado para Image32 ver. 4.3 (27 de setembro de 2022)
- Atualizado para Skia4delphi ver. 4.0.2
23 de outubro de 2022: versão 3.9.4 (VCL+FMX)
- Editor de componentes FMX: seleção alterada para cor fixa
- Atualizado para Image32 ver. 4.3 (27 de setembro de 2022)
15 de setembro de 2022: versão 3.9.3 (VCL+FMX)
- Estilos W11 removidos da demonstração (disponível em Delphi apenas por get-it)
- Pacotes D11 atualizados para Delphi 11.2
28 de agosto de 2022: versão 3.9.2 (VCL+FMX)
- Corrigido #240 tsvggraphic.assign
- Atualizado para Image32 ver. 4.2 (28 de julho de 2022)
- Atualizado para Skia4delphi 3.4.1 Biblioteca
- Corrigido #241 Alinhamento dos itens de origem e destino (FMX)
21 de junho de 2022: versão 3.9.1 (VCL+FMX)
- Suporte adicionado a outras versões Delphi (VCL): D10 Seattle
08 de maio de 2022: versão 3.8.3 (VCL+FMX)
- Atualizado para Skia4Delphi 3.4.0 Biblioteca
- Exemplo de Svgexplorer movido na pasta "Demo"
10 de abril de 2022: versão 3.8.2 (VCL+FMX)
- Atualizado para Skia4Delphi 3.3.1 Llibrary
- Atualizado para Image32 4.11 Biblioteca
29 de março de 2022: versão 3.8.1 (VCL+FMX)
- Ratio de aspecto fixo para mecanismo de skia
- SVGViewer atualizado
- Demos atualizados
- Alinhamento à versão mais recente do skia4delphi
17 de março de 2022: versão 3.8.0 (VCL+FMX)
- Suporte para Delphi 11.1
- Sufixo da Biblioteca Atualizado para Delphi 10.4 e 11 para (AUTO)
09 de março de 2022: versão 3.7.0 (VCL+FMX)
- Suporte ao Skia4Delphi 3.2.0 concluído
- Suporte removido para o motor Cairo
- Renderização fixa com imagem32
28 de fevereiro de 2022: versão 3.6.0 (VCL + FMX)
- Suporte para Skia4delphi também em plataformas FMX
26 de fevereiro de 2022: versão 3.5.2 (VCL+FMX)
- Renderização fixa com fmx-image32
23 de fevereiro de 2022: versão 3.5.1 (VCL+FMX)
- Biblioteca Image32 atualizada para 4.1.0 versão
- Suporte atualizado para Skia4Delphi 3.1.0
19 de fevereiro de 2022: versão 3.5.0 (VCL+FMX)
- Biblioteca Image32 atualizada para 4.0.2 versão
- Suporte atualizado para skia4delphi 3.0.3
- Editor fixo SVGText
- Consertou alguns skia4delphi svg renderizando
14 de fevereiro de 2022: versão 3.4.0 (VCL+FMX)
- Biblioteca Image32 atualizada para 4.0.1 versão
- Adicionado suporte ao skia4delphi 3.0
- Corrigido algum problema de desenho de imagem32
13 de janeiro de 2022: versão 3.3.0 (VCL+FMX)
- Biblioteca Image32 atualizada para 4.0.0 versão
- Adicionado um conjunto de exemplos de SVG de cartas de jogo
- Corrigido Imagem32 Problema de desenho com "Playing Cards"
24 de novembro de 2021: versão 3.2.0 (VCL+FMX)
- Os editores de componentes usam temas IDE (claro, escuro ...) e estilo
- Corrigido os componentes disponíveis na paleta ao trabalhar com plataformas móveis
05 de novembro de 2021: versão 3.1.1 (VCL+FMX)
- Imagem corrigida 32 Problema de desenho em FMX
- Adicionado exportação a vários arquivos PNG ao editor de componentes
31 de outubro de 2021: versão 3.1.0 (VCL+FMX)
- Biblioteca Image32 atualizada para 3.4.1 versão
- Motor skia4delphi adicionado (não completo)
28 de agosto de 2021: versão 3.0.0 (VCL+FMX)
- Pacotes atualizados para Delphi 11
- Atualizado alguma documentação (imagens e wiki)
24 de agosto de 2021: versão 2.5.0 (VCL+FMX)
- Alinhado à Image32 Library Ver.3.1
22 de julho de 2021: versão 2.4.0 (VCL+FMX)
- Atualizado e alinhado ao Image32 Ver.3 Biblioteca
- Pacotes adicionados para Delphi 11 Alexandria
18 de julho de 2021: versão 2.3.1 (VCL+FMX)
- Fixado arquivos de renderização com cores definidas por 8 dígitos
17 de julho de 2021: versão 2.3.0 (VCL+FMX)
- Adicionado novo mecanismo: Image32 Biblioteca por Angus Johnson (VCL+FMX)
- Image32 agora é o motor Delphi nativo padrão
- Adicionado suporte para plataformas Android e iOS (por Image32 Engine)
- Adicionado suporte para versões atrasadas Delphi (de Xe3)
- Demonstração adicionada para comparar os quatro motores (SVGViewer)
- A renderização fixa "centralizada" em svgiconimage para o motor do Cairo.
- Aviso: Alterado TSVGICONIMAGE Ancestral de TcustomControl para TgraphicControl
18 de abril de 2021: versão 2.2.6 (VCL+FMX)
- Adicionada nova propriedade ApplyFixedColortorotonly
- Adicionado demonstração para o novo componente TControllist (apenas para D10.4.2)
22 de fevereiro de 2021: versão 2.2.5 (VCL+FMX)
- Adicionado exportação à opção PNG ao editor de componentes
23 de janeiro de 2021: versão 2.2.4 (VCL+FMX)
- Fixo #156 Alongamento para Svgiconimage
- Fixo #157 Svgiconimage recebe a imagem correta do VirtualImagelist
17 de janeiro de 2021: versão 2.2.3 (VCL+FMX)
- Corrigido #151 Antialiasing Problems
- Configurações fixas de diferentes largura e altura no editor
- Visualização fixa do ícone com diferentes altura e largura no editor
24 de dezembro de 2020: versão 2.2.2 (VCL+FMX)
- Adicionado largura, altura e propriedade de zoom para componentes FMX
- Editor de componente FMX redesenhado
- Editor de componente VCL fixo
08 Dez 2020: versão 2.2.1 (VCL+FMX)
- Adicionado plataformas de 64 bits para pacotes
- Pequenas correções (vazias, exceto blocos)
- Cor fixa tsvgiconimage Herited
- Relagem fixa para a versão FMX
23 de setembro de 2020: versão 2.2.0 (VCL+FMX)
- Adicionado motor SVG "Cairo"
- Adicionado antialiascolor ao efeito Antialias aperfeiçoado
- Editor de propriedades ImageIndex adicionado para Svgiconimage
- Adicionado FILLCOLOR e GRAYSCALE ao componente TSVGICONIMAGE
16 de setembro de 2020: versão 2.1.1 (VCL) 2.1.0 (FMX)
- Problemas corrigidos ( #110, #111, #113)
- Editando texto SVG no editor mostra erros sem perder o conteúdo
04 de setembro de 2020: versão 2.1.0 (VCL) 1.5.1 (FMX)
- Adicionada visualização para ícones ao carregar arquivos SVG
- Corrigido muitos problemas ( #81, #86, #87, #88, #91, #94, #103 ...)
- Refatorar a análise do XML para aumentar o desempenho (usando xmllite)
26 de agosto de 2020: versão 2.0 (VCL) 1.5.0 (FMX)
- Adicionado fábrica para escolher o motor
- Interface adicionada para usar o motor SVG de terceiros alternativos
- Editor de componentes reprojetados para apoiar categorias para ícones
- Novo suporte para o Native VirtualImagelist (de D10.3)
- Ícones do STOREASTEXT para DFM por padrão (e modo exclusivo)
- Corrigido muitos problemas (do #35 ao #72) cuidam do tsvgiconvirtualImagelist.Collection renomeado para svgiconvirtualimagelist.imagecollection.
17 de agosto de 2020: versão 1.9 (VCL+FMX)
- FIRLCOLOR mudou de tsvgcolor para tcolor
- Corrigido atribuir fixo -color ao ícone no editor de componentes
- Editor de componente atualizado para usar o Tcolorbox
13 de agosto de 2020: versão 1.8 (VCL+FMX)
- Refatoração completa para o apoio total do High-DPI
- Novo componente SvgiconImageCollection
- Novo componente svgiconvirtualImagelist
- Redesenho do componente svgiconimagelista e editor de componentes
- Demo atualizado para testar o Multi-Monitor com DPI diferente
- Corrigido Edição #20: Coordenadas em Double (Métodos PaintTo)
- Problema corrigida nº 25: a Matrix de Transform está analisada incorretamente
- Problema corrigida nº 26: erro em calcmartrix
- Problema corrigida nº 27: tsvgradialgradient.readin não lê a matriz de gradienttransform
- Problema corrigido nº 28: as cores devem ser revertidas no TSVGradialGradient
- Problema corrigido nº 29: a escala deve ser baseada na largura/altura do ViewBox
- Problema corrigida nº 31: Propriedades vazias do SVG causam exceções
- Corrigido a edição nº 33: o atributo de apresentação de "preenchimento" não é processado
- Problema corrigida nº 34: Elementos de texto de exceção causam exceções
05 de agosto de 2020: versão 1.7 (VCL+FMX)
- Adicionado método dpichanged
- SVGEXPlorer aprimorado
- Corrigido o problema 20: substituído o dobro por um único
- Problema corrigida nº 19 e 18 #: carregar/savetostream ineficiente e codificar inconsistência
- Problema corrigida nº 17: Conversão errada de PT para PX
- Problema corrigida nº 14: Problema de escala
- Corrigido Edição 11: Incompatível com Drag-Drop of Timagelist
- Problema corrigido nº 6: a renderização de algumas imagens SVG está incorreta
15 de julho de 2020: versão 1.6 (VCL+FMX)
- Renderização fixa no Tbutton! (VCL)
- Corrigido "Aplicar" no ImageEditor (VCL)
- Adicionado XML Reformat ao ImageEditor (VCL)
- Adicionado utilitário para explorar ícones em disco/pasta (svgexplorer)
- Desenho de cores herdadas corrigidas (SVG)
- Propriedades de armazenamento corrigidas no DFM no modo binário (VCL)
- Armazenamento fixo para algumas propriedades (não armazene valores padrão)
13 de junho de 2020: Versione 1.5 (VCL+FMX)
- Adicionado suporte para DisabledGrayScale e DisablesOpacity como no VirtualImagelist
- Desenho corrigido ícones desativados também com vclstyles ativo
09 de junho de 2020: Versione 1.4 (VCL+FMX)
- Adicionado em escala de cinza e fixo à lista de imaginações para todos os ícones
- Adicionado cinza e fixo para um único ícone
- Adicionou algumas imagens de demonstração SVG complexas
- Demos atualizados
06 de junho de 2020: versão 1.3 (VCL+FMX)
- Editor de propriedades adicionado para tsvgiconimage.svgText e tsvgiconitem.svgText
- Corrigido alguns problemas de desenho com o atributo de transformação
- Ícones fixos de redimensionar quando o monitor DPI muda
28 de maio de 2020: versão 1.2 (VCL+FMX)
- Apoio completo do Delphi 10.4
- Suporte adicionado a outras versões Delphi (VCL): DXE6, DXE8, D10.1
- Memória de posição adicionada do editor de componentes
- Problema corrigido: Editor de ícones não mantendo os ícones adicionados
- Problema corrigido: SVG com a notação de expoente não analisa corretamente e afeta a exibição da imagem
25 de maio de 2020: versão 1.1 (VCL+FMX)
- Adicionado o componente TSVGICONIMAGELISTFMX com editor de componentes avançados.
- Adicionado o componente TSVGICONIMAGEFMX para mostrar SVG em um tempo.
- Demos para mostrar como eles funcionam.
- Desempenho muito alto para construir centenas de ícones.
24 de maio de 2020: Primeira versão 1.0 (VCL)
- Adicionado o componente TSVGICONIMAGELIST com editor de componentes avançados.
- Adicionado o componente TSVGICONIMAGE para mostrar SVG em um tempo.
- Demos para mostrar como eles funcionam.
- Desempenho muito alto para construir centenas de ícones.
- Apoio de Delphi 10.2 a 10.4 Sydney (outras versões Delphi em breve)
Obrigado a
Esses componentes usam as bibliotecas seguintes:
Image32 Biblioteca de Angus Johnson
Esses arquivos estão incluídos nas pastas Image32/Source e Image32/Source/Image32_SVG
Licença de software Boost Boost de direitos autorais versão 1
Biblioteca Skia4delphi pela AutoHors
Esses arquivos estão incluídos na pasta Skia4Delphi/fonte
Copyright MIT-License
Muito obrigado a Vincent Parrett e Kiriakos Vlahos por sua grande contribuição.