Usuário com melhor resposta
grafico some ao redimensionar window

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
Respostas
-
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
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 -
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 -
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