Guest - Robson - Postado Fevereiro 3, 2007 Denunciar Share Postado Fevereiro 3, 2007 Pessoal, está acontecendo o seguinte tenho um TImage onde Desenho linhas entre os componentes dipostos(elipses) só que a cada vez que desenho em tempo de execução o Timage dá um piscada.Como faço para isso não acontecer?Obrigado......... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Fevereiro 3, 2007 Denunciar Share Postado Fevereiro 3, 2007 opatenta assim, primeiro no evento OnCreate do Formvocê coloca DoubleBuffered := True;se só isso não resolver o que acho pouco provávelentão deve ter no TImage essa mesma propriedadeentão você faz o mesmo...Image1.DoubleBuffered := True;to sem o delphi aqui...abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Robson - Postado Fevereiro 4, 2007 Denunciar Share Postado Fevereiro 4, 2007 cara não deu certo..........não existe essa propriedade para o TImage ......Valeu.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Fevereiro 4, 2007 Denunciar Share Postado Fevereiro 4, 2007 ... onde Desenho linhas entre os componentes dipostos(elipses)com licença, uma curiosidade: você guarda algum tipo de informação referente ao desenho das linhas? Tipo tem algum tipo de estrutura que indique a sequência de linhas que desenha? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Fevereiro 4, 2007 Denunciar Share Postado Fevereiro 4, 2007 cara não deu certo..........não existe essa propriedade para o TImage ......Valeu..opatente colocar no Evento OnCreate do Form DoubleBuffered := True; talvez funcione...Se não funcionar ou não for o que deseja responda a pergunta do Micheus talvezseja o que você precisa!Eu sempre usei o DoubleBuffered mas em alguns casos pode não funcionar rsabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Fevereiro 9, 2007 Denunciar Share Postado Fevereiro 9, 2007 Micheus desculpe pela demora em te responder.........Sim eu quardo os pontos inicial e final de cada linha que chamo de transição em um vetor.Quando movo um componente calculo novamente os pontos que envolvem esse componente a chamo um método que lê o vetor de transicoes e redesenha na tela cada transicao...Coloquei o DoubleBuffered := true no meu scrollbox que armazena o Timage no evento onShow do Form Deu certo só que ficou lento.Abraços........... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Fevereiro 9, 2007 Denunciar Share Postado Fevereiro 9, 2007 Sim eu quardo os pontos inicial e final de cada linha que chamo de transição em um vetor.Quando movo um componente calculo novamente os pontos que envolvem esse componente a chamo um método que lê o vetor de transicoes e redesenha na tela cada transicao...Robison, acho que esse assunto é referente ao seu outro post, certo?Eu não saberia como resolver o problema que vem se desenrrolando por aqui. Mas já que você mantém um tipo de estrutura que lhe indica o que e onde algo deve ser desenhado, permitam-me sugeri algo que já utilizei em outra oportunidade, que se bem me lembro não gerava este efeito de piscar. Era um esquema para desenha fluxogramas/portas lógicas. Derrepente vale o teste. :) O princípio é o seguinte: você define e cria um canvas no form onde estará adicionado o seu ScrollBox, então cria um procedimento para desenhar seus elementos gráficos no scrollbox utilizando aquele canvas (observe, não é utilizado outra coisa além do scrollbox). Um exemplo:type TForm1 = class(TForm) ScrollBox1: TScrollBox; private ScrollCanvas :TCanvas; procedure DesenhaDiagrama; end; ... procedure TForm1.FormCreate(Sender: TObject); begin ScrollCanvas := TCanvas.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin ScrollCanvas.Free; end; // aqui va o procedimento que lê a estrutura de dados e procede ao // desenho por ela representado procedure TForm1.DesenhaDiagrama; begin ScrollCanvas.Handle := GetDC(ScrollBox1.handle); // desenha os diagramas ... ScrollCanvas.Rectangle(10, 10, 200, 150); // desenhando apenas um retângulo ... ReleaseDC(ScrollBox1.handle, ScrollCanvas.Handle); end; // aqui, quando o form for redesenhado, redesenha o diagrama procedure TForm1.FormPaint(Sender: TObject); begin DesenhaDiagrama; end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Robson -
Pessoal, está acontecendo o seguinte tenho um TImage onde Desenho linhas entre os componentes dipostos(elipses) só que a cada vez que desenho em tempo de execução o Timage dá um piscada.
Como faço para isso não acontecer?
Obrigado.........
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.