Renderizar muitas imagens repetidas é mais ou menos performante do que usar pincéis no WPF?
-
20-09-2019 - |
Pergunta
Um aplicativo que nossa empresa está trabalhando atualmente exibe muitas formas de retângulo com gradientes para desenhar 'ladrilhos'. Uma discussão interna surgiu sobre isso colocou uma questão de desempenho. Esses ladrilhos são de cerca de 100 pixels em 200 pixels e são gradientes de vermelho, amarelo ou verde. A qualquer momento, pode haver até 100 desses ladrilhos na tela. Seria mais desempenho criar uma imagem para cada um (vermelho, amarelo, verde) e repeti -la quando necessário, ou seria melhor continuarmos desenhando -os usando pincéis WPF padrão?
EDIT: Para esclarecer, o pincel de gradiente que estamos usando é um LinearGradientBrush.
Solução
Por experiência, desenhar -os usando pincéis terá um desempenho muito melhor. A sobrecarga de carregar as imagens de ladrilhos e torná -las é grande em comparação com os retângulos cheios de renderização.
Outras dicas
A única maneira de esclarecer isso seria experimentá -lo nos dois sentidos e medir o desempenho de cada abordagem.
Você precisará adicionar código ao tempo que o loop de renderização e registrar o resultado para arquivar e forçar um Rainha de 1000 (ou mesmo 100.000) para poder obter uma figura realista.
Meu pressentimento é que o LinearGradientBrush
Seria mais rápido do que carregar uma imagem (mesmo de recursos) - mas estou disposto a provar errado.