Problema al dibujar Png's declaradas como globales

Started by FreeYourMind, February 21, 2010, 12:29:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Buenas, me he encontrado este estraño problema:

Tengo el siguiente código:

GLOBAL

MapLogo;

....

BEGIN

MapLogo = load_png("Map/GecaSoft.png");

set_mode(800, 600, 32);
set_fps(60, 0);

...

logo();
END

PROCESS logo();
PRIVATE

MapLogo2;

BEGIN

graph = MapLogo;
z = 400;
y = 100;
x = 200;

put(0, MapLogo, 200, 300);

MapLogo2 = load_png("Map/GecaSoft.png");
put(0, MapLogo2, 200, 500);

FRAME;
END

Esto me pinta 3 veces el logo por esta orden:

El de arriba es el definido como graph y utiliza la variable global MapLogo;

El del medio se pinta utilizando un put() y utiliza la variable global MapLogo;

El del fondo se pinta utilizando un put() y utiliza la variable local MapLogo2;

El problema esta en que sólo el último, el MapLogo2, el cual he declarado como variable privada, se pinta correctamente (lo podeis mirar en los bordes de la imagen, esta es la ultima y los bordes se pintan bien, no parecen 'ratados' como los 2 primeros, y se ven bien los bordes grises que tiene alrededor).

A que se debe, porque la imagen es tratada de forma distinta si declarada como local y es la unica forma que se pinta correctamente ?






panreyes

No tiene que ver con que la cargues en una variable local o global, sino que hagas el set_mode antes o después :)

FreeYourMind

Grácias, bien que así es. Es la primera vez que utilizo png's y modo 32 en Div Likes :)

panreyes

Concretamente, la diferencia está en que al no hacer el set_mode primero cargas la imagen en modo 16 bits, y en la conversión a map se simplifican las transparencias a opaco/transparente, en vez de utilizar valores intermedios como "medio-transparente". En fin xD

FreeYourMind


Windgate

Jias, curioso problema, una cosa nueva que sabemos, ¿Cerramos el hilo? :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es