screen_copy()

screen_copy(<región>, <fichero>, <gráfico>, <x>, <y>, <ancho>, <alto>)

Descripción:

Copia una region 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).

Programa ejemplo:
PROGRAM ejemplo_screen_copy;

GLOBAL
    ángulo;
    ángulo2;

BEGIN
    load_fpg("help\help.fpg");
    graph=2;
    x=160;
    y=100;
    put(0,graph,x,y);
    LOOP

        // Copia la pantalla (región 0) al gráfico 2

        screen_copy(0,0,2,0,0,320,200);

        ángulo+=1000;
        ángulo2+=1971;
        angle=get_distx(ángulo,25000);
        size=95+get_disty(ángulo2,30);
        FRAME;
    END
END


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ándo 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