FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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.... |
#2
|
|||
|
|||
"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. |
|
|
|