Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2012
Suriu Suriu is offline
Miembro
 
Registrado: abr 2007
Posts: 48
Poder: 0
Suriu Va por buen camino
Question Ayuda con este problema

Hola, estoy creando una aplicacion que realiza algo paresido al pincel en el paint, pero utilizando la propiedad canvas de in TImagen. E estado mirando por hay y ya he hecho algo parecido.

El TImagen es de color predeterminado ( Blanco ) y sobre este pinto una linea de estilo libre mediante canvas.Pen, la cual pongo en blanco mediante el evento OnCreate del Form; y en megro mediante un Timer la propiedad Interval en 1000 , para que al acabar el tiempo lanse un evento mediante el OnTimer que cambie el canvas.Pen a negro.

Hasta aqui todo bien el problema es que al hacer clik en el TImagen me enpiesa a pintar en blanco y trascurrodo el tiempo es que empiesa a pintar en negro. Este es el problema " como diminuir el tiempo para cambiar de un color a otro de forma que paresca instantaneo ". La otra pregunta seria " Como hacerlo sin el Timer".

Codigo:

Código Delphi [-]
unit Unit2; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, jpeg, Buttons,ExtCtrls, ShellAPI, TypInfo; 
       
type 
  TForm2 = class(TForm) 
    Image11: TImage; 
    Timer1: TTimer; 
    procedure Image11MouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    procedure Image11MouseMove(Sender: TObject; Shift: TShiftState; X, 
      Y: Integer); 
    procedure Image11MouseUp(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    procedure FormCreate(Sender: TObject); 
    procedure Timer1Timer(Sender: TObject); 
    procedure Image11DblClick(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
    img: TImage; 
  end; 
 
var 
  Form2: TForm2; 
 
implementation 
 
uses Unit3, Unit1; 
 
{$R *.dfm} 
 
var 
 Rect: TRect = (Left: -1); 
 z,c: integer; 
 hola : boolean; 
  
procedure TForm2.Image11MouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
begin 
  if Button = mbLeft then 
  Rect.TopLeft := Point(X,Y); 
  Rect.BottomRight := Point(X, Y); 
  hola := true; 
  Timer1.Enabled := true; 
end; 
 
procedure TForm2.Image11MouseMove(Sender: TObject; Shift: TShiftState; X, 
  Y: Integer); 
begin 
  if Rect.Left > -1 then 
   Rect.TopLeft := Point(X,Y); 
   z := x; 
   c := y; 
   if hola then 
    Image11.Canvas.LineTo(x,y); 
end; 
 
procedure TForm2.Image11MouseUp(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
begin 
  if Button = mbLeft then 
   Rect.Left := -1; 
   hola := false; 
   Image11.Canvas.Pen.Color := clWhite; 
end; 
 
procedure TForm2.FormCreate(Sender: TObject); 
begin 
  Image11.Canvas.Pen.Color := clWhite; 
end; 
 
procedure TForm2.Timer1Timer(Sender: TObject); 
begin 
  Image11.Canvas.Pen.Color := clBlack; 
  Timer1.Enabled := false; 
end; 
 
procedure TForm2.Image11DblClick(Sender: TObject); 
begin 
  hola := False; 
end; 
 
end.
Responder Con Cita
  #2  
Antiguo 30-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Suriu.

Por favor recuerda poner a tus mensajes títulos significativos, "Ayuda con este problema" no dice mucho sobre el mismo. También es importante que ubiques tus mensajes en los foros correspondientes, el mensaje no tiene que ver con el foro: Sistemas operativos > Windows.

Saludos y gracias por tu colaboración.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 02-04-2012
CSIE CSIE is offline
Miembro
 
Registrado: feb 2008
Ubicación: Universo paralelo
Posts: 69
Poder: 17
CSIE Va por buen camino
La verdad es que no entiendo cuál es el problema.

Mirando el código puedo ver que el pen lo pones a blanco en el create del form, pero también el el mouseup y lo cambias a negro en el timer (tras 1 segundo) y el timer lo activas cada mousedown. ¿era eso lo que buscabas?

Saludos
Responder Con Cita
  #4  
Antiguo 02-04-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

¿Porqué utilizas un timer?, si pones el color del pen a black en el onmousedown funciona igual que poniendolo en el timer y empieza a pintar directamente.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con este procedimiento Ledian_Fdez Varios 1 01-04-2011 21:35:12
Ayuda con este error kdemia Internet 3 12-09-2010 13:12:11
Ayuda Con Este Error :s darnnezt Varios 9 27-07-2010 15:43:45
Ayuda con este problema emiliano_b OOP 36 25-07-2010 03:36:27
una ayuda con este error please dariana20 SQL 3 14-06-2006 23:14:06


La franja horaria es GMT +2. Ahora son las 12:38:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi