CyberPress
közéleti magazin
cyberpress@sopron.hu
2024. május 18., szombat, Erik, Alexandra napja


Irodalmi Kávéház

Intranet Galéria

Apróhirdetések

Képeslapok

Soproni Képindex

Polgármesteri Hivatal

ZÓNÁK
Főoldal
Lapszemle
  Lapszemle
Kultúra
  KultúrVáros
  Lélektől lélekig
  SzínházVilág
  Soproni Ünnepi Hetek
  Borváros
Regionális kulturális programajánló
  Színház
  Kiállítás
  Rendezvények
  Hangverseny-Zene
Cyber Kurír
  Hírek - események
  Szomszédvár - Régió
  Soproni Snassz
Európai Unió
  EU
Cyber hírek
  Közélet
  SopronMedia
  Városháza
  Sport
Szórakozás
  Fesztiválgájd
  HangFal
  Mi1más
  Diákélet - diákszáj
  ViccGödör
Gazdaság
  Kereskedelmi és Iparkamara
Sport - szabadidő
  Sportcentrum
  Száguldó Cirkusz
Tudomány-technika
  Űrvadász
  Egészség
Környezet
  Borostyán
  Egészség

Dr. Bit  

Programozzunk együtt !

A grafikus képernyő elmentése és 
visszaállítása
Az előzőekben volt példa az egérrel való 
rajzolásra. Ez mind szép és jó, de hogyan tudod
ezt elmenteni? (Feltételezem, hogy tisztában vagy a filekezelés 
alapjaival, hogy hogyan 
lehet irni, illetve olvasni egy fileból. Nem is kell több.) A C és a 
C++ grafikus
módjában van két függvény, ami felhasználható erre: a getpixel(), 
illetva a putpixel().
#include
void far putpixel(int x, int y, int color);
A putpixel egy képpontot(pixelt) rajzol a 
megadott x és y koordinátára, a megadott
szinnel(color).
#include
unsigned far getpixel(x,y);
Az x és az y által meghatározott koordináta helyén lévő képpont 
színével tér vissza.
Hogyan tudjuk ezt felhasználni? 
Mentés:
Nem nehéz: irunk egy 'while' hurkot, ami 
végigmegy a 
képernyőn, miközben eltárolja egy tömbben a koordináták színét, 
amiket ezután 
egyszerűen kimentünk egy fileba. 
Visszaállítás:
Ez sem bonyolult: kiolvassuk a mentett fileból az 
adatokat, tömbbe rendezzük őket,
majd megint egy 'while' hurokkal kirakjuk őket a 'putpixel()' 
függvénnyel.
A megoldást rád bízom, azonban adok néhány 
jótanácsot:
Az tűnhet a legegyszerűbbnek, hogyha egy megadott nagyságban mented 
el a képet,
például minden 10-dik szám után új sor fog következni. Vegyünk 
például egy
egyszerű képet. Ha tudjuk a képről, hogy minden 10 szám egy sort 
jelent, akkor könnyedén
vissza tudjuk rajzolni, csak figyelnunk kell az aktuális pozíciót:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
Ennek van egy hátránya: csak olyan képet tudunk 
kirajzolni, amiről tudjuk, hogy
milyen széles. Ha tehát ilyen programot készítünk, akkor vagy a 
felhasználótól kell bekérni a szélességét, vagy el kell helyeznünk a 
fileba
egy adatot, amiből ezt megtudhatjuk. Egyik sem túl egyszerű: ha a 
felhasználótól
kérdezzük meg, akkor ő bonyolultnak fogja találni a programot, ha a 
fileba helyezzük
el, akkor a programunk lesz összetettebb.
Én egy másik módszert ajánlanék: minden sor végére rakjunk ki egy 
olyan különleges értéket,
amely jelezni fogja a programunk számára, hogy kezdjen új sort. Így a 
file egy kicsit nagyobb
lesz az előzőhöz viszonyítva, de csak annyi bájtttal, ahány soros!
A program így sokkal egyszerűbb lehet, és a legfontosabb: a kép 
méretétől függetlenül
felhasználhatóvá válhat!

1 2 3 4 5 6 7 8 9 10 X
11 12 13 14 15 16 17 18 19 20 X
21 22 23 24 25 26 27 28 29 30 X
31 32 33 34 35 36 37 38 39 40 X
41 42 43 44 45 46 47 48 49 50 X
51 52 53 54 55 56 57 58 59 60 X
61 62 63 64 65 66 67 68 69 70 X
71 72 73 74 75 76 77 78 79 80 X
81 82 83 84 85 86 87 88 89 90 X
91 92 93 94 95 96 97 98 99 100 X
Itt az X-ek (a sárga oszlopban) jelölik az új sor 
kezdetét, de ez lehetne más is!
Hát mostanra ennyit. A következő alkalommal
A grafikus lapok és az animáció kapcsolatáról fogok írni.
 
hpet



2000. május 02., kedd 00:00


címlap zóna archívum




© 1999-2007, Internet Sopron Egyesület