Qual é a melhor maneira de escolher um pincel aleatório da coleção Escovas em C #?

StackOverflow https://stackoverflow.com/questions/1010638

  •  06-07-2019
  •  | 
  •  

Pergunta

Qual é a melhor maneira de escolher um pincel aleatório da coleção System.Drawing.Brushes em C #?

Foi útil?

Solução

Se você quiser apenas uma escova sólida com uma cor aleatória, você pode tentar o seguinte:

    Random r = new Random();
    int red = r.Next(0, byte.MaxValue + 1);
    int green = r.Next(0, byte.MaxValue + 1);
    int blue = r.Next(0, byte.MaxValue + 1);
    System.Drawing.Brush brush = new System.Drawing.SolidBrush(Color.FromArgb(red, green, blue));

Outras dicas

Para WPF, o uso de reflexão:

var r = new Random();
var properties = typeof(Brushes).GetProperties();
var count = properties.Count();

var colour = properties
            .Select(x => new { Property = x, Index = r.Next(count) })
            .OrderBy(x => x.Index)
            .First();

return (SolidColorBrush)colour.Property.GetValue(colour, null);

Eu sugiro começar uma lista de escovas de amostra suficiente, e selecionar aleatoriamente a partir de lá.

Apenas recebendo uma cor aleatória irá produzir cores terríveis, e você pode facilmente configurar uma lista de talvez 50 cores que você poderia, então, usar cada vez que você precisa um aleatório.

Uma maneira óbvia é a de gerar um número aleatório e, em seguida, escolher a escova correspondente.

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