La Web del Programador: Comunidad de Programadores
 
    Pregunta:  29812 - PROBLEMA AL DELIMITAR UNA VENTANA GRAFICA (SETBIEWPORT)
Autor:  Manuel Aguilar
Hola, alguno de ustedes me puede decir como se reestablecen las vetanas graficas despues de utilizar el (setviewport) a las cordenadas; 1,1, ya que despues de utilizarlo no puedo quitar la ventana y restablecerla

  Respuesta:  Eider Mauricio Aristizabal Erazo
Hola a todos los amantes del padre de los lenguajes de programación...
Espero que este ejemplo te ayude con algo...
cualquier duda enviamela a mi correo y con el código fuente.

1) Debes limpiar el puerto que tenias abiero con la funcion clearviewport
2)Debes hacer un nuevo setviewport que te abarque toda la panalla.
3)En el código que sigue, puse algunos valores que se salen del rango de la pantalla, esto para verificar la funcinalidad del setviewport

//Saludo a los de Colombia y Cali
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void RestaurarPantalla();
void main(void)
{
int gdriver = DETECT, gmode, errorcode;
int ht;
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
settextstyle(SMALL_FONT,HORIZ_DIR,4);setcolor(15);
outtextxy(10,10,"Estoy en la posicion 10, 10 con el puerto de la pantalla");
setcolor(1);line(10,12,getmaxx(),12);setcolor(15);
outtextxy(10,30,"Pulse Enter para pasar al nuevo puerto");
getch();
setviewport(100,100,getmaxx()-100,getmaxy()-100,1);
setcolor(1);line(-1000,12,1000,12);setcolor(15);
outtextxy(10,10,"Posicion 10, 10 del puerto setviewport(100,100,getmaxx()-100,getmaxy()-100,1);");
outtextxy(10,30,"Pulse Enter para regresar al puerto por defecto de la pantalla");
getch();
RestaurarPantalla();
outtextxy(10,10, "Estoy en la 10,10 de la pantalla por defecto, es decir que ya lo restaur‚");
getch();
}
void RestaurarPantalla(){
cleardevice();//opcional
clearviewport();//limpio el puerto que se encuentra abierto actualmente
setviewport(0,0,getmaxx(),getmaxy(),1);//Puerto por defecto
cleardevice();//opcional
}