none
Grafico de linha - Audiometria

    Question

  • Bom dia a todos,

    Estou desenvolvendo um software de audiometrias e tenho que gerar dois gráficos de linha na impressão desta, porém não estou encontrando um solução pois os marcadores(símbolos padrão de audiometrias conforme legenda abaixo dos gráficos da imagem que pode ser visualizada no link abaixo) que representam os valores passados para o gráfico tem que mudar de acordo com este valor. Utilizo o crystal reports ou Report Viewer para fazer esta impressão e os gráficos deles não me dá esta opção. Então pensei em plotar estes gráficos “manualmente” via código e salvar como imagem mas também não sei se consigo fazer com que os marcadores altere em tempo de execução. Alguém poderia me sugerir alguma solução para este problema? A aplicação é em Windows Form e a linguagem é C#.

    Abaixo está o link para um modelo de impressão da audiometria onde os gráficos são exibidos:

    http://www.itsistemas.com.br/img/grafAudiometria.jpg

    Wednesday, June 16, 2010 2:20 PM

Answers

  • Olá jqueiroz, 

    Uma sugestão para plotares imagens no C# seria utilizando o objeto Graphics, disponível no objeto PaintEventArgs dos eventos Paint de um controle PictureBox. 

    No sistema que desenvolvi, eu desenhava manualmente a grade das frequências (linhas verticais) e a grade dos Db (linhas horizontais) em um quadro de tamanho fixo (num PictureBox). No C#, essas linhas podem ser desenhadas com o DrawLine.

    As coordenadas de frequências e Db ficavam em uma espécie de matriz, o qual servia de localização para os símbolos do resultado. A sacada que tive para os símbolos foi a seguinte: fiz um trabalho artesanal no Paint (é, o MS Paint do Windows), desenhando todas as combinações de símbolos possíveis. Fiz um BMP para cada símbolo, em tamanho bem reduzido (se não me engano, 12 x 12 píxels, algo assim). Coloquei essas imagens dentro do sistema (em um pictureBox separado). No seu caso, usando o C#, poderia até utilizar o Resource para armazenar as imagens. Mas pode ser com PictureBoxes auxiliares também. A partir dessas imagens auxiliares (que colocarias no Resource ou em outros PictureBoxes), podes plotar o símbolo na grade do PictureBox principal (o do resultado, na grade de frequencias e Db), usando o comando DrawImage

    Com o resultado totalmente plotado, terias de salvar o desenho no campo do blob do banco-de-dados, para poder imprimir no Crystal. Para fazer isso, seria interessante que algum colega, mais especialista em C# aqui no Forum, lhe desse uma dica. No VB6, era necessário utilizar os comandos AppendChunk dos RecordSets, com array de bytes e tudo mais. No C#, creio que seja mais simples ou seja diferente a forma de se gravar imagens de PictureBoxes no banco-de-dados.

    A idéia é essa. Espero ter esclarecido mais um pouco.

    Um abraço,

    Daniel Ethur - Porto Alegre/RS

    Friday, June 18, 2010 2:20 AM

All replies

  • Olá jqueiroz-it,

    Por coincidência, um colega e eu desenvolvemos um software de audiometria há alguns anos, em VB6. Vou explicar a minha solução, talvez lhe sirva para uma idéia na sua solução:

    Os exames de Audiometria Tonal, há um PictureBox para cada ouvido (esquerdo e direito).

    O usuário marca os símbolos em cada um desses PictureBox. Essa funcionalidade nós implementamos no código, através dos tratamentos dos eventos de MouseDown e MouseUp. Mas poderia ser através de digitação de valores também, sem problemas, pois as posições clicadas no gráfico são gravadas no banco de dados em forma de códigos cartesianos. 

    Para imprimir o resultado do exame, desenvolvemos um relatório no Crystal, com campos de uma tabela auxiliar. Esses campos dos gráficos são do tipo blob, ou (na época do crystal 4 e 6), do tipo Ole. O sistema le os códigos do resultado, grava em um PictureBox e seta a imagem desse pictureBox no campo blob/ole. Então, o sistema dispara a emissão do RPT, que imprime o desenho do resultado, através desse campo (no caso, dois campos, um para cada ouvido).

    Basicamente essa é a idéia. Espero ter ajudado.

    Sds.

    Daniel Ethur - Porto Alegre/RS

    Wednesday, June 16, 2010 11:28 PM
  • jqueiroz,

    Já utilizou o ZedGraph? É uma class library para criação de gráficos. Acredito que resolva o seu problema, veja o link abaixo.

    ZedGraph
    http://zedgraph.org/

    Att.

    Ari C. Raimundo
    MCAD, MCTS
    http://araimundo.blogspot.com

    Thursday, June 17, 2010 1:36 AM
    Moderator
  • Daniel... Obrigado pela reposta, já me ajudou bastante.

    Pelo que entendi você plota o gráfico em uma imagem e salva ela no banco de dados e depois é feita uma consulta para gerar o relatório do crystal... Mas como você plota este gráfico? no meu caso o usuário informa os valores de cada frequência(250, 500, 1000, 2000 e etc) testada na audiometria e o sistema salva estes valores no banco de dados, então a qualquer momento o usuário pode imprimir esta audiometria, para isso é feita uma consulta no bd onde os valores das frequências são retornados juntamente com as informações de mascaramento (caso tenha sido utilizado em alguma frequência) e auscência de reposta (caso não obteve reposta o valor da frequência será 999). A minha grande dificuldade é em relação aos simbolos dos valores das frequências por ex:

    O simbolo padrão para o ouvido direito é o circulo mas se em alguma frequência foi utilizado mascaramento o simbolo já tem que ser o triângulo e se não obteve reposta é o triângulo com uma seta para baixo.

    Resumindo: Como plotar o grafico e trocar estes simbolos conforme os valores das frequências.

    Agradeço pela atenção

     

     

    Thursday, June 17, 2010 6:36 PM
  • Olá jqueiroz, 

    Uma sugestão para plotares imagens no C# seria utilizando o objeto Graphics, disponível no objeto PaintEventArgs dos eventos Paint de um controle PictureBox. 

    No sistema que desenvolvi, eu desenhava manualmente a grade das frequências (linhas verticais) e a grade dos Db (linhas horizontais) em um quadro de tamanho fixo (num PictureBox). No C#, essas linhas podem ser desenhadas com o DrawLine.

    As coordenadas de frequências e Db ficavam em uma espécie de matriz, o qual servia de localização para os símbolos do resultado. A sacada que tive para os símbolos foi a seguinte: fiz um trabalho artesanal no Paint (é, o MS Paint do Windows), desenhando todas as combinações de símbolos possíveis. Fiz um BMP para cada símbolo, em tamanho bem reduzido (se não me engano, 12 x 12 píxels, algo assim). Coloquei essas imagens dentro do sistema (em um pictureBox separado). No seu caso, usando o C#, poderia até utilizar o Resource para armazenar as imagens. Mas pode ser com PictureBoxes auxiliares também. A partir dessas imagens auxiliares (que colocarias no Resource ou em outros PictureBoxes), podes plotar o símbolo na grade do PictureBox principal (o do resultado, na grade de frequencias e Db), usando o comando DrawImage

    Com o resultado totalmente plotado, terias de salvar o desenho no campo do blob do banco-de-dados, para poder imprimir no Crystal. Para fazer isso, seria interessante que algum colega, mais especialista em C# aqui no Forum, lhe desse uma dica. No VB6, era necessário utilizar os comandos AppendChunk dos RecordSets, com array de bytes e tudo mais. No C#, creio que seja mais simples ou seja diferente a forma de se gravar imagens de PictureBoxes no banco-de-dados.

    A idéia é essa. Espero ter esclarecido mais um pouco.

    Um abraço,

    Daniel Ethur - Porto Alegre/RS

    Friday, June 18, 2010 2:20 AM
  • Daniel, obrigado mais uma vez... vou seguir essa linha de pensamento, quando tiver o resultado te comunico.
    Friday, June 18, 2010 11:42 AM
  • Olá

     

    Estou com o Mesmo problema gostaria de saber se você achou a solução?

     

    Cristiano


    cristiano
    Monday, June 20, 2011 9:08 PM
  • Olá amigo, estou com o mesmo problema, você conseguiu resolver?

    []´s

    Fernando Datorre

    datorre@live.com

    Thursday, August 09, 2012 1:40 PM