Pergunta

Você conhece esses botões de colorido com um pequeno retângulo, exibindo a cor atualmente selecionada? Como nos produtos do MS Office.

Eu gostaria de implementar um usando C# / .NET. Então, eu tenho um pequeno ícone agradável com um retângulo de cor magenta (que é exibir a cor) e um fundo transparente.

Eu posso pensar em duas maneiras como isso pode ser feito, mas ambos não são realmente elegantes:

  • Edite o ícone usando o software gráfico para ter uma cor de fundo sólida em vez de transparência e redimensioná -lo para ser exatamente tão grande quanto o botão que o contém. Isso permitiria usar transparentcolor = mananta em combinação com o fundo do botão, no entanto, o ícone precisava ser editado sempre que o tamanho do botão, a cor da barra de ferramentas ou outra coisa mudar.
  • Edite o ícone programaticamente sempre que uma nova cor for selecionada. Funcionaria, mas parece um pouco complexo (em relação ao desenvolvimento e desempenho) para mim.

Então. Talvez eu esteja perdendo a maneira óbvia e fácil de implementar esse botão? Agradecemos antecipadamente por quaisquer dicas/sugestões/inspiração :)

Foi útil?

Solução 2

Obviamente, não há solução elegante. Eu escolhi o primeiro, usando transparência e backcolor PNG, com a desvantagem de ter que colorir o fundo PNG, como o fundo do painel que contém. Parece ser menos doloroso dessa maneira.

Outras dicas

Você pode facilmente substituir o OnPaint Método e desenhe um retângulo com qualquer cor que desejar.

Não vejo razão para usar um ícone, PNG ou qualquer outro recurso de imagem para isso. Isso parece um completo desperdício de recursos.

Basta desenhar as caixas do código, desenhando as cores que atualmente fazem parte da lista de cores do controle. Idealmente, seu controle permitirá que o chamador adicione suas próprias cores. E isso não exigiria nenhuma brincadeira com imagens.

Eu apenas usei um caixa combinada do proprietário draw quando eu fiz isso, mas desenhei uma caixa de cores enquanto descrevei. Muito fácil.

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