Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2003
lfidanza lfidanza is offline
Miembro
 
Registrado: jun 2003
Ubicación: Argentina
Posts: 15
Poder: 0
lfidanza Va por buen camino
Question Gráfica de curvas

Hola, soy muy nueva programando y tengo una duda que seguramente alguien me la podrá sacar.
Necesito graficar una curva de una señal a lo largo del tiempo. Yo siempre hice esto colocando puntos o lineas en un PaintBox, utilizando el Canvas. Pero el problema con este componente es que cada ves que se abre una venta y se cierra se me borra parte de la curva.
Lo otro que probé fué con una Image, pero los procesos son muy lentos. Y como tengo que ir desplazando la curva a medida que avanzan los puntos fuera del Image, eso me significa borrarlo y volver a graficar todos los puntos un pixel corrido hacia la izquieda. Lo cual me demora demasiado.
Alguien sabe cual es la herramienta mas apropiada para esta aplicación?? y cómo hago para que se vaya desplazando la curva hacia la izquierda de una manera mas sencilla??

Muchas gracias !!!
Responder Con Cita
  #2  
Antiguo 14-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

En cuanto a lo de dibujar la linea de forma rápida, la mejor manera es usando una operación XOR, aunque con ello pierdas la de ventaja de ver la línea dibujada de un color concreto. La técnica consiste en dibujar la línea, aplicando previamente a la propiedad Mode del objeto Pen, la operación raster pmNOTXOR. Esto hace que la línea se dibuje en el color inverso del que hay en el Canvas (por ello no se dibuja de un color concreto), con la ventaja de que cuando vuelves a dibujar encima, devuelve la imagen a su color inicial, así te ahorras el tiempo de redibujado del fondo. Si quieres que la línea se actualice con mucha frecuencia, seguramente ésta es la mejor opción. El algoritmo sería más o menos este:
Código:
Pen.Mode := pmNOTXOR;
DibujaLinea;

// aquí va el bucle que grafica las curvas
repeat
  DibujaLinea;  // se dibuja la línea anterior para borrarla
  CambiaDatosCurva;  // se obtienen los datos de la nueva curva
  DibujaLinea;  // dibjamos la nueva curva
end;

DibujaLinea;  // por último borramos la curva de la pantalla
También hay componentes por ahí que hacen todo esto, normalmente de pago, dependiendo de la profesionalidad de lo que quieras obtener, quizás te interesen.
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 14-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Me parece que lo que tu necesitas es redibujar el componente cada ves que este lo requiera, o si el gráfico es demasiado lento de dibujar, hacerlo en un TBitmap y dibujar el bitmap sobre tu componente cuando este lo necesite.

Si lugar a dudas, tu clase tendría que ser algo como esta, y en el paint dibujar tus curvas: (con todo respeto )
Código:
  TCurvas = TGraphicControl
  protected
    procedure Paint; override;
  end;
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 14-07-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
Creo que lo que le pasa es que dibuja directamente sobre el canvas del formulario, por lo que al abrir una ventana encima de esta, una parte del dibujo canvas se pierde, por el que se redibuja por defecto.

Pienso que lo más práctico es poner un TImage i dibujar sobre el canvas que lleva (ej: image1.picture.bitmap.canvas), que este no se mantendrá aunque se abran ventanas encima.
Responder Con Cita
  #5  
Antiguo 09-09-2010
hackcgm hackcgm is offline
Registrado
 
Registrado: ene 2010
Posts: 9
Poder: 0
hackcgm Va por buen camino
Hola A Todos Como Puedo Dibujar Una Onda Senoidal Espero Q Me Puedan
Ayudar No Se Si Como Empezar
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 00:12:03.


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