none
grafico some ao redimensionar window RRS feed

  • Pergunta

  • estou criando uma aplicação pra gerar um gráfico cartesiano.

    Tenho um componente picturebox dentro de um windowsformshost, gero pontos usando Random, e

    desenho linhas com o método DrawLine(). Isto funcionou perfeitamente, porém, ao redimensionar a janela,

    o gráfico desaparece. Tentei aplicar vários eventos (mouseleave, mouseenter, lostfocus, gotfocus, sizechanged) chamando o método desenhar() que gera o gráfico, tanto na window que contém o componente, qto nele, pra redesenhar o gráfico, mas não to tendo muito sucesso, porque qdo arrasto ou redimensiono e solto o mouse sem movê-lo, não tenho o gráfico.

    Qual seria a maneira correta de fazer isto?


    Chris
    sexta-feira, 11 de fevereiro de 2011 23:37

Respostas

Todas as Respostas

  • Caro Chris,

    O correto é não usar WindowsFormHost. Se precisa usar gráfico você tem duas saídas:

    a) Escrever o controle via APIs do WPF, herdando de FrameworkElement, como em: http://blogs.msdn.com/b/dsimmons/archive/2010/11/28/simple-wpf-2d-graphics-drawingvisual.aspx

    b) Usar um controle existente, tal como o Visifire, suite de controles gratuitos hospedado no Codeplex.

    A dica é: se possível, nunca, nunca use Windows Form Host.

    Espero ter ajudado!


    HJ
    domingo, 13 de fevereiro de 2011 23:37
  • Entendi. Vou checar este visifire então.

    Mas caso eu não tenha alternativa, e tenha que usar este picturebox, qual seria o evento

    a tratar pra redesenhar o gráfico?

    Eu tentarei travar o tamanho do controle pra não ter este problema, mas ainda é cedo

    pra eu saber se poderei usar esta estratégia.

    A propósito, andei olhando diferentes chart components para wpf, quando se referem à Silverlight, seria correto assumir que são válidos para uma aplicação desktop também?


    Chris
    segunda-feira, 14 de fevereiro de 2011 11:01
  • Caro Chris,

    Controles Silverlight não servirão para WPF (e vice versa). O Silverlight usa um conjunto de apis específicas, disponibilizadas dentro do plugin. Já o WPF usa o framework instalado no sistema operacional.

    Quanto ao redraw, veja se isso ajuda: http://www.csharp-examples.net/redraw-control-on-resize/

    Espero ter ajudado!


    HJ
    • Marcado como Resposta Chris_lynx segunda-feira, 14 de fevereiro de 2011 14:49
    segunda-feira, 14 de fevereiro de 2011 13:45