Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pascal: Delphi 6 jpg

Janezki [08.08.2003 12:13:52]

#

Miten jpeg -formaattissa olevan kuvan saisi latautumaan nopeammin image -komponentissa? Kun sen latautuminen kestää jotain sekunnin ja sitten kun kuvan tuo näytölle myöhemmin ohjelman ajon aikana niin sen latautuminen ei kestä ollenkaan.

Olikohan tuo tarpeeksi selkeä

thefox [11.08.2003 11:44:21]

#

Jpeg-kuva on tiukkaan pakkattua dataa joten on ymmärrettävää että sen lataaminen ei ole erityisen nopeaa. Miksi haluat ladata sen nopeammin?

Janezki [11.08.2003 15:51:10]

#

Ihan pelin nopeuden takia. Tympäsee kun kuvien latautuminen kestää ja sitten kun on vielä paljon kuvia.

thefox [12.08.2003 15:55:43]

#

Yleensähän pelit lataavat "Loading"-ruudun kera tarpeelliset grafiikat etukäteen. Sitä paitsi Image-komponentit eivät todellakaan ole se tehokkain tapa tehdä pelejä (jos kyse ei ole lautapelistä ;-)

Janezki [13.08.2003 17:26:50]

#

Kyse on lähinnä taustakuvista jotka on jotain 1024x768. En ole vielä ideoinut pelin 'interaktiivista' grafiikkaa.
Kyllähän grafiikka ladataan jossain vaiheessa mutta sitä kun en tiedä miten. Tähän asti jpeg -kuvat latautuvat vasta kun ne tuodaan ruutuun. Ehkä jos ne määrittää ajon aikana image1.picture := 'blabla'. Pitää kokeilla mutta se vielä että voiko kuvia sijoittaa .res tiedostoihin tai yleensä piilottaa jotenkin?

zacura [13.08.2003 17:38:41]

#

lainaus:

Kyllähän grafiikka ladataan jossain vaiheessa mutta sitä kun en tiedä miten. Tähän asti jpeg -kuvat latautuvat vasta kun ne tuodaan ruutuun. Ehkä jos ne määrittää ajon aikana image1.picture := 'blabla'.

Voit tehdä globaalin muuttuja tyyppiä TPicture johon etukäteen lataat kuvan.

uses
 Jpeg

...
var
 Kuva: TPicture;
 ...

procedure TForm1.FormCreate(Sender: TObject);
begin
 Kuva := TPicture.Create;
 Kuva.LoadFromFile('kuva.jpg');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Kuva.Free;
end;

procedure Piirra;
begin
 Form1.Canvas.Draw(10,10,Kuva); //Piirtää kuvan kohtaan 10,10 suoraan Formille;
 Image1.Picture.Assign(Kuva); //Sijoittaa kuvan TImage komponenttiin
end;

edit: Korjasin koodia

Janezki [13.08.2003 20:38:17]

#

Valitettavasti tuo ei nopeuta latautumista. Yksi vaihtoehto on että sijoitan jpeg -kuvan sisältävän formin mainformin taakse joten kuva saa latautua siellä rauhassa, tai yksinkertaisesti vaihdan bitmappeihin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta