SauloBr 0 Denunciar post Postado Abril 29, 2008 Bom dia colegas do Imasters, Gostaria de saber o pq que quando eu abro uma janela por cima do meu desenho canvas, ele simplesmente apaga a parte que a janela estava sobreposta? Vlw! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 30, 2008 Tente dar um Repaint depois que fechar a janela. Compartilhar este post Link para o post Compartilhar em outros sites
SauloBr 0 Denunciar post Postado Abril 30, 2008 Tente dar um Repaint depois que fechar a janela. Marcio o repaint apaga todo o desenho...hehehe Quero que o desenho não se apague quando a janela sobrepor! :blink: Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 30, 2008 você tem algum exemplo de como esta fazendo para desenhar ? Compartilhar este post Link para o post Compartilhar em outros sites
SauloBr 0 Denunciar post Postado Abril 30, 2008 você tem algum exemplo de como esta fazendo para desenhar ? Estou desenhando com os metodos normais do Canvas(MoveTo,LineTo) existente no fórum e na internet, utilizando os eventos do MouseDown,MouseUp e MouseMove. Exemplo: procedure TForm1.FormMouseUp(Sender: TObject); begin case Ferramenta of frLinha: begin Canvas.MoveTo(Origem.X, Origem.Y); Canvas.LineTo(X, Y) end; frRetângulo: Canvas.Rectangle(Origem.X, Origem.Y, X, Y); frElipse: Canvas.Ellipse(Origem.X, Origem.Y, X, Y); frRetRedondo: Canvas.RoundRect(Origem.X, Origem.Y, X, Y, . (Origem.X - X) div 2, (Origem.Y - Y) div 2); end; FlagDesenho := False; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: . Integer); begin if FlagDesenho then begin Canvas.Pen.Mode := pmNotXor; case Ferramenta of frLinha : begin Canvas.MoveTo(Origem.X, Origem.Y); Canvas.LineTo(MovePonto.X, MovePonto.Y); Canvas.MoveTo(Origem.X, Origem.Y); Canvas.LineTo(X, Y); end; frRetângulo : begin Canvas.Rectangle(Origem.X, Origem.Y, MovePonto.X, MovePonto.Y); Canvas.Rectangle(Origem.X, Origem.Y, X, Y); end; frElipse : begin Canvas.Ellipse(Origem.X, Origem.Y, X, Y); Canvas.Ellipse(Origem.X, Origem.Y, X, Y); end; frRetRedondo : begin Canvas.RoundRect(Origem.X, Origem.Y, X, Y,(Origem.X - X) div 2, (Origem.Y - Y) div 2); Canvas.RoundRect(Origem.X, Origem.Y, X, Y,(Origem.X - X) div 2, (Origem.Y - Y) div 2); end; end; MovePonto := Point(X, Y); end; Canvas.Pen.Mode := pmCopy; end; No caso eu só estou usando a ferramenta linha. Compartilhar este post Link para o post Compartilhar em outros sites
SauloBr 0 Denunciar post Postado Maio 5, 2008 você tem algum exemplo de como esta fazendo para desenhar ? Estou desenhando com os metodos normais do Canvas(MoveTo,LineTo) existente no fórum e na internet, utilizando os eventos do MouseDown,MouseUp e MouseMove. Exemplo: procedure TForm1.FormMouseUp(Sender: TObject); begin case Ferramenta of frLinha: begin Canvas.MoveTo(Origem.X, Origem.Y); Canvas.LineTo(X, Y) end; frRetângulo: Canvas.Rectangle(Origem.X, Origem.Y, X, Y); frElipse: Canvas.Ellipse(Origem.X, Origem.Y, X, Y); frRetRedondo: Canvas.RoundRect(Origem.X, Origem.Y, X, Y, . (Origem.X - X) div 2, (Origem.Y - Y) div 2); end; FlagDesenho := False; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: . Integer); begin if FlagDesenho then begin Canvas.Pen.Mode := pmNotXor; case Ferramenta of frLinha : begin Canvas.MoveTo(Origem.X, Origem.Y); Canvas.LineTo(MovePonto.X, MovePonto.Y); Canvas.MoveTo(Origem.X, Origem.Y); Canvas.LineTo(X, Y); end; frRetângulo : begin Canvas.Rectangle(Origem.X, Origem.Y, MovePonto.X, MovePonto.Y); Canvas.Rectangle(Origem.X, Origem.Y, X, Y); end; frElipse : begin Canvas.Ellipse(Origem.X, Origem.Y, X, Y); Canvas.Ellipse(Origem.X, Origem.Y, X, Y); end; frRetRedondo : begin Canvas.RoundRect(Origem.X, Origem.Y, X, Y,(Origem.X - X) div 2, (Origem.Y - Y) div 2); Canvas.RoundRect(Origem.X, Origem.Y, X, Y,(Origem.X - X) div 2, (Origem.Y - Y) div 2); end; end; MovePonto := Point(X, Y); end; Canvas.Pen.Mode := pmCopy; end; No caso eu só estou usando a ferramenta linha. Márcio, eu acho q o certo é que não ocorra o repaint do form, pq ele faz isso automatico com os desenhos canvas, deve ser isso que apaga. Agora como evitar que o form não ative o repaint natural( nativo do form)? Sera que tenho q redesenhar a tela antiga? Compartilhar este post Link para o post Compartilhar em outros sites