void screen_copy( int región, int fpg, graph, x, y, ancho, alto )


Descripción:

Copia una región de pantalla a una región de cualquier gráfico.

Se trata de una potente función que puede resultar muy versátil, al proporcionar "feedback" de la pantalla del ordenador, es decir, que puede enviar una imagen de la pantalla a un gráfico (operación contraria a lo normal).

Se debe primero definir el número de región rectangular que se va a copiar de la pantalla (de la imagen anterior del programa), estas regiones se definen con la función define_region(). La región número 0 siempre se refiere a la pantalla completa.

Después se deberá indicar el gráfico al que se debe transferir la imagen, con los parámetros fichero y gráfico (el fichero será el número 0, si el gráfico pertenece al primer FPG cargado, o bien si se ha cargado de forma separada).

Por último se indicará la zona dentro del gráfico a la cual debe transferirse la imagen. Esta se definirá como x, y, ancho y alto, referidos a las coordenadas dentro del gráfico (siendo las coordenadas [0,0] su esquina superior izquierda).


MAIN_PROGRAM_CDIV

PRIVATE
 int angulo,angulo2;

BEGIN_PROGRAM

    set_gfx(GFX_AUTODETECT_WINDOWED);
    set_mode(m320x200);

    angulo=angulo2=0;

    load_fpg("../help.fpg");  // Se carga el fichero de gráficos

    graph=2;
    x=160;
    y=100;
    put(1,graph,x,y);

    LOOP{
        // Copia la pantalla (región 0) al gráfico 2
        screen_copy(0,1,2,0,0,320,200);

        angulo +=1000;
        angulo2+=1971;

        angle = get_distx2d(angulo, 25000);
        size  = 95 + get_disty2d(angulo2, 30);

        FRAME;
   }

END_PROGRAM

Este ejemplo carga el fichero de gráficos, en el que el gráfico número 2 es una cuadrícula de diferentes colores, para ponerlo en pantalla y definirlo como gráfico del proceso principal, que irá rotándolo y cambiando de tamaño (en función de ángulo y ángulo2, respectivamente).

Es entonces cuando se utiliza la función screen_copy() para reenviar la imagen de pantalla a este gráfico, con lo que se produce dicho efecto.

Nota: El tamaño de la región de pantalla (la zona transferida) y el de la región del gráfico (donde se transfiere) no tiene que coincidir. La función screen_copy() realizará una reducción o ampliación cuando sea necesario, para ajustar el tamaño de la zona transferida.


Ver: define_region() - clear_screen() - graph