![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Ahora tengo otra duda, si quiero que el fondo sea una imagen cargada en un componente Image, como hago para que este se vea cuando borro la posicion anterior de la ficha?
|
|
#2
|
|||
|
|||
|
Pues para 'borrar' la imagen debes copiar el mismo trozo que habia antes en ese lugar. Esto lo puedes conseguir teniendo un TImage no visible con todo el fondo cargado y ir copiando de ella segun necesites. Para eso puedes usar el metodo copyrect de TCanvas. Saludos.
PD : De todas maneras, el doublebuffered a true (tanto del form como de donde muevas) te optimizara el parpadeo. |
|
#3
|
|||
|
|||
|
Gracias por la pronta respuesta, pero podrias poner aunque sea un pseudocodigo de como seria ya que mire la funcion pero no entiendo como funciona. Lleva tres parametros: rectangulo destino, un canvas y el rectangulo origen.
Gracias |
|
#4
|
|||
|
|||
|
Hola, te pongo el mismo ejemplo que en la ayuda de delphi
MyRect es la zona de Form1 donde se va a copiar, bitmap.canvas es el canvas origen, y MyOther es el 'trozo' que se coje de bitmap.canvas. saludos |
|
#5
|
|||
|
|||
|
Perdon por seguir insistiendo, pero finalmente decidi tratar de implementar el doble buffer porq me ayudaria en varias cosas.
Encontre en un articulo (http://delphi.about.com/library/bluc/text/uc052102g.htm) esta solucion : Código:
Bmp := TBitmap.Create;
try
Bmp.Width := ClientWidth;
Bmp.Height := ClientHeight;
// Draw lines onto the **bitmap's** canvas
for i := 0 to 20000 do
begin
Bmp.Canvas.MoveTo(Random(ClientWidth), Random(ClientHeight));
Bmp.Canvas.LineTo(Random(ClientWidth), Random(ClientHeight));
end;
Canvas.Draw(0,0, Bmp); // draw the bitmap to screen now
finally
Bmp.Free;
end;
Parece ser una buena solucion para dibujar todo de una y que no se vea como se va dibujando paso a paso. El problema que tengo es que uso un componente timer y cada vez que ejecuta llama a este codigo de manera que la imagen vuelve a parpadear. Active la propiedad Doublebuffer del form a true pero no cambia en nada el resultado, ya no se que hacer. Si alguien se da cuenta de mi error por favor digame como solucionarlo. Gracias |
|
#6
|
||||
|
||||
|
Bueno, la tecnica del Doble Buffer evita el parpadeo... no tendría por que fallarte.... a menos que el tiempo de tu ttimer fuera inferior al tiempo que tarda en dibujarse la figura... Por otro lado, activar la propiedad Doublebuffer del form es como redundar...
Practica aumentando el tiempo de tu ttimer, por ejemplo a 5 segundos, o mas (dependiendo de como lo tengas) y verifica si te sigue pasando... si no pasa quiere decir que el problema es con el ttimer.... Si sigue pasando entonces el problema está en algo de la logica de tu codigo.... |
|
#7
|
|||
|
|||
|
Cita:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Dibujando líneas en Canvas | JAV | Gráficos | 1 | 27-09-2007 15:56:05 |
| Dibujando en un TListView | pepon386 | Gráficos | 1 | 20-01-2006 09:36:28 |
| Dibujando en capas | blueicaro | Gráficos | 1 | 26-04-2005 09:46:02 |
| Canvas does not allow drawing | MADV01 | Impresión | 1 | 02-04-2004 15:08:43 |
| Canvas???? | craven | Gráficos | 2 | 17-05-2003 13:26:02 |
|