Pregunta: | 4225 - COMO PUEDO GRABAR EL CONTENIDO DE UNA VENTANA |
Autor: | Irancho Mendez Perez |
Como puedo poner una ventana y despues quitarla reponiendo lo que estaba atras de esa ventana, no de toda la pantalla, sino solo de una ventana |
Respuesta: | edwin payan |
uses crt , go32;
type save_screen = array [0..25*80*2-1] of byte; procedure GetScreen (var Getpantalla:save_screen); Begin dosmemget($B800, 0,Getpantalla,25*80*2); End; procedure PutScreen (var Putpantalla:save_screen); Begin dosmemput($B800, 0, Putpantalla,25*80*2); End; var pantalla1:savescreen; begin textatt:=15+0*16; clrscr; {ejemplo} getscreen(Pantalla1) texatt;=15+1*16; write(´hola´); readln; putscreen(Pantalla1) {termina el ejemplo}: readln; end; {ojo, compilado en freepascal} |
Respuesta: | carlos iturralde |
a la pregunta le hace falta especificar si el modo de video es grafico o texto, supondre, para la respuesta, que es modo texto: 1._ debes definir un puntero 2._ creas memoria suficiente (con el comando new) para almacenar la ventana, el tamaño estara dado por: (x2-x1)*(y2-y1)*2 3._ grabas el contenido de la region con la funcion gettext(x1,y1,x2,y2,puntero), si no es la funcion sera una muy parecida con los mismos parametros 4._ ahora puedes "ensuciar" la parte de la pantalla copiada para reponerla: 1._ puttext(x1,x2,puntero) 2._ una vez terminado el trabajo "liberas" la memoria con dispose(puntero) y bingo... buenas compilaciones ... |
Respuesta: | raul roldan |
en pascal muy facil utiliza imagesize para guardar las dimenciones rectangulares(solo rectangulares)del area dende vas a poner tu ventana, la guardas con getimage,para esto debes consultar algo en un liobro o en la misma biblioteca de temas que hay aqi,ya echo esto abres tu ventana y as lo que vas a hacer y despues abres la ventana maxima permitida por la resolucion actual(comunmente 640*400 si es uqe utilizas initgraph sin algun controlador de mas)y por ultimo utilizas la funcion getimage(posicion inicial horizontal, " vertical,variable de tipo bitmap(osea pointer)porque tu sabras que en la memoria la utiliza linealmente y con numeros hexa,y mode de bit a ponerCopyput XorPut OrPut AndPut NotPut); porfavor escribeme.... |