none
Extrair cor de área do gráfico torta - componente Chart - WindowsForms - VB.net RRS feed

  • Pergunta

  • Boa tarde!

    Em um dos meus formulários eu gero um gráfico de torta, baseado nos detalhes de uma tabela (master-detail). Junto ao gráfico, eu adicionei um segundo datagridview, onde exibe de forma linear as informações em que o gráfico se baseia.

    Agora surgiu a ideia de pintar a linha do datagridview de detalhes, baseado na cor da área do gráfico que a linha representa.

    Pintar a linha do datagridview é tranquilo, eu só não sei como acessar essa informação da cor da área no componente chart do vb.net. 

    Eu preparei um gráfico de exemplo para tentar ilustrar minha dúvida:

    Alguém poderia me ajudar?

    Att.

    Giovani

    quinta-feira, 15 de maio de 2014 18:38

Respostas

  • Boa noite pessoal

    Eu continuei estudando o meu problema e descobri uma forma de fazer o que eu quero.

    Eu localizei o local onde a cor da área é armazenada, mas no preenchimento padrão da torta, esse campo vem vazio. Portanto não consegui pegar a cor (acredito ainda que seja possível extrair a bendita cor padrão da área, mas ainda não encontrei o caminho certo).

    Criei então uma função randômica para atribuir uma cor ao setor e logo em seguida atribui a mesma cor a linha do datagridview.

    Agora eu caí em um problema menor, mas não menos importante. A função geradora de cores, as vezes, gera cores extremamente fortes o que dificulta a leitura do gráfico.

    Mas para não gerar problemas, irei finalizar esse tópico e possivelmente abrir outro para a dúvida da função randômica.

    Eu extraí a função randômica para cores deste site. Ela ficou assim:

    ' Return a random RGB color.
        Public Function RandomRGBColor() As Color
            Return Color.FromArgb(255, _
                m_Rnd.Next(0, 255), _
                m_Rnd.Next(0, 255), _
                m_Rnd.Next(0, 255))
        End Function

    Para aplicar ao gráfico fiz assim:

    Dim cCor As Color = RandomRGBColor()
    meuChart.Series(0).Points(meuChart.Series(0).Points.count-1).color = cCor
    meuDataGridView.Rows(bdsAux.Position).DefaultCellStyle.BackColor = cCor
    meuDataGridView.Refresh()

    Att.

    Giovani

    quarta-feira, 21 de maio de 2014 00:08