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 17-11-2004
jose_2057111
 
Posts: n/a
Ayuda con rotacion de graficas


Holasssssss a todos.
Delphianos no se si me puedan ayudar o entender
Estoy trabajando con canvas.poligon
Al programa se ingresa puntos y grafica la grafica uniendo estos puntos
Ahora esta figura tiene que rotar es decir tenemos que ingresar un angulo
hasta ahi bien.
Tambien se aplica escalamiento es decir disminuyes o aumentas el tamano de tu figura.

Imagencen que tengo un cuadrado y luedo lo minimiso a la mitad pero las lineas cruzan por los lados del cuadrado grande.
y ahora yo la misma figura tiene que rotar digamos 45 grados entonces tengo que limpiar la imagen de achicamiento a la mitad.
Lo que pasa es que la figura inicial debe quedar como muestra
y despues ir haciendo operaciones con este grafico.
Loque pretendo es crear una opcion limpiar la cree haciendo que los puntos anteriores se pinten de blanco pero el grafico anterior esta de rojo y este modifica al grafico anterior .

espero que me entiendan....
Responder Con Cita
  #2  
Antiguo 17-11-2004
<Sergio> <Sergio> is offline
Miembro
 
Registrado: sep 2004
Posts: 72
Poder: 20
<Sergio> Va por buen camino
"Delphianos" no Delphinos, Delfinos o elfos está mejor .

Para borrar el gráfico anterior y evitar parpadear:

1.- Trabaja todo creando un Tbitmap "Mibitmap" que también tiene un Tcanvas. El bitmap debe tener la propiedad HandleType:=bmDIB (Independiente de dispositivo por lo tanto de resolución actual de pantalla) y los bits por pixel en la profundidad que más te paresca.
2.- Para mostrar en pantalla usa un TpaintBox y en su onpaint haz un bitblt(.....,SRCCOPY) del Mibitmap.canvas.handle para hacerlo un poco más rápido.

BOOL BitBlt(

HDC hdcDest, // handle of destination device context
int nXDest, // x-coordinate of destination rectangle's upper-left corner
int nYDest, // x-coordinate of destination rectangle's upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
HDC hdcSrc, // handle of source device context
int nXSrc, // x-coordinate of source rectangle's upper-left corner
int nYSrc, // y-coordinate of source rectangle's upper-left corner
DWORD dwRop // raster operation code
);

3.- En lugar de borrar simplemente haz un bitblt con la última opcion en blackness, whiteness o patcopy para usar el Tbrush (con esto "limpias" el bitmap en memoria) y luego vuelve a dibujar todos los objetos gráficos no borrados.

Para optimizar puedes hacer esto: Para cada gráfico definir un rectángulo que lo contenga. Así que cuando tengas que actualizar una parte de tu bitmap Preparas el pedazo que tiene que actualizarse primero limpiando esa parte (poniendo todo en blanco por ejemplo) y luego dibujando en esa parte sólo los gráficos cuyos rectángulos se intersectan con la figura que fue borrada.
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:54:46.


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