Kezdőoldal » Számítástechnika » Programozás » Szeretnék valami sajátot,...

Szeretnék valami sajátot, képernyőt?

Figyelt kérdés
Szeretnék az applikációmba saját képernyőt, amire saját bitmap fontokkal írhatok. Az alap rutinokat, mint képernyőre betűk kiírása, sorok scrollozása, egyebek, hogyan tudnám a legegyszerűbben megvalósítani?

#képernyő #saját #bitmap font
2023. ápr. 27. 21:55
1 2
 1/13 A kérdező kommentje:
Senki? Semmi ötlet, hogy hogyan is kezdjem el?
2023. ápr. 28. 07:19
 2/13 vmg ***** válasza:
Némi konkrétum nem ártana, hogy érdemben hozzá lehessen szólni.
2023. ápr. 28. 08:22
Hasznos számodra ez a válasz?
 3/13 A kérdező kommentje:

Mi érdekelne? Egy 24-szer 40 karakteres kijelzőt szeretnék, ami olyan méretű, amilyet én akarok, olyan fontokat ír, amilyet én akarok. Mondjuk 11 pixel széles és 16 pixel magas betűképek.

Ez 440-szer 384 pixeles képernyő terület lenne. Erre a területre lehetne szöveget írni, mintha egy kis számítógép lenne. Rendesen görgetné a szöveget, új sort nyitna, satöbbi.

2023. ápr. 28. 08:31
 4/13 anonim ***** válasza:
100%
Először is érdemes lenne közölni, hogy milyen rendszer alatt szeretnéd megvalósítani. Másodszor pedig, hogy milyen nyelven, milyen keretrendszerrel készül az alkalmazásod. Meg ilyen apróságok...
2023. ápr. 28. 09:26
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:
Bocsi, de hogy jön ide a rendszer, meg a nyelv, pláne a keretrendszer? Egy problémáról van szó, mondjuk olyanról, mint digitalizált képek tömörítése. Ehhez készül egy algoritmus, amit aztán meg lehet írni c nyelven, rust nyelven, meg python nyelven is. Ez a dolog is ilyen. A hogyanra vagyok kiváncsi. Már kerestem ezzel kapcsolatos dolgokat, mielőtt itt feltettem volna a kérdésemet, de sajnos annyira egyedi és ritka ez, hogy nem találtam róla semmit.
2023. ápr. 28. 10:03
 6/13 anonim ***** válasza:
88%

Leszek konstruktív, bár bevallom nem könnyíted meg.


A probléma az, hogy a kérdésed már viszonylag specifikus: az ugyanis, hogy az "alap rutinokat" hogyan tudnád legegyszerűbben megvalósítani már erősen környezetfüggő. Más és más választ kapsz ha assembly-ben, python-ban, C#-ban, JAVA-ban, JavaScript-ben vagy akármilyen környezetben akarod megvalósítani szimplán mert a nyelvek és a hozzájuk tartozó könyvtárak eltérő környezetet biztosítanak.


Az alapfeladat amúgy nem nehéz: van egy memóriaterületed, amin a karakterek kódjai vannak, és van két eljárásod: az egyik módosítja ezt a memóriaterületet, a másik meg kirajzolja. Nagyjából ennyi a karakteres képernyő.


A konkrétumokhoz már kéne a környezet. Alacsony szinten sorfolytonos memóriakezelést fog kb mindenki javasolni, magas szinten meg sztringtömböket. Egyáltalán milyen operációs rendszeren akarod megvalósítani? Ez befolyásolja a renderelést. És így tovább...


Szóval jobban jársz, ha leírod, hogy pontosan mit szeretnél. Csak meg akarod érteni pl. hogyan működik a Windows command line ablak, vagy valami hasonlót akarsz magad is csinálni. Vagy csak egy régi számítógép-szimulátort próbálsz meg összerakni, amin meg még csak parancssor volt.

2023. ápr. 28. 13:24
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
Egy régi számítógép emulálása a cél. Meg is van oldva a dolog. Működik, csak nem elég gyors. Magam hoztam össze, bármiféle segédlet, doksi nélkül. A megvalósítás egy 2D string tömb, aminek a tartalma van leképezve pixelről pixelre a 440 x 384 képpontnyi területre. A scrollozás is úgy megy, hogy a második sor másolódik az első helyére, a harmadik a másodikéra és így tovább. De feltételezem, hogy van az enyémnél jobb megvalósítás is. Célom, hogy a karakteres üzemmód mellé legyen később grafikus mód is a szükséges primitívekkel és persze szinekkel, de egyelőre még ez is kifog rajtam. Elviselhető, használható így ez, csak nem jó.
2023. ápr. 28. 14:11
 8/13 anonim ***** válasza:

#4-es vagyok.


"Bocsi, de hogy jön ide a rendszer, meg a nyelv, pláne a keretrendszer?"


Úgy, hogy nagyon nem mindegy, hogy mondjuk PC-re akarod megírni, Windows alá, C nyelven, vagy webre Javascripttel, vagy mondjuk Androidra, natívan, Java nyelven. Teljesen más megoldásokat fogsz kapni mindegyik esetben.

Az algoritmus szögegyszerű, egy sor- és oszlopfolytonos memóriaterületről kell átmásolni a bájtokat a képernyőt memóriaterületére, ha scrollozás is játszik, akkor pedig a scrollozás mértékének megfelelő X vagy Y vektorral eltolva.

2023. ápr. 28. 15:37
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:

Köszönöm a segítő szándékot, de úgy tűnik, hogy csak elbeszélünk egymás mellett. Én nem megoldásokat szeretnék kapni Javascript vagy Java nyelven, hanem know-howt. Ez az egész nem merül ki a scrollozásban. Itt van sok más is. Kurzor mozgatás, villogtatás, van billentyűkezelés, azaz megoldás a backspace, az enter, a sorvég karakterek kezelésére, a képernyőtartalom tördelésére, a fileból betöltődött szöveg folyatására.

Ennek, ahogy a mászkálós játékoknak is, nyilván van egy célszerűen, jól kidolgozott sablonja, egy szerkezete, ahogy felépül az egész. Én erre a szerkezetre lennék kiváncsi, csak nem mászkálós játékokkal, hanem a képernyőkezeléssel kapcsolatban.

2023. ápr. 28. 21:30
 10/13 anonim ***** válasza:

#8-as vagyok.


"Én erre a szerkezetre lennék kiváncsi"


De ezt már leírtuk, lényegében annyi a dolog lényege, hogy van egy backbuffered, ami lehet egy string tömb, egy memóriaterület, bármi, azt módosítgatod, és végül megjeleníted.


Backspace-nél például fogod a memóriaterületet, és az utolsó elemét lenullázod.

Enter billentyű lenyomásánál beleteszel a memóriaterületre egy speciális vezérlőkaraktert (ASCII 13), kirajzolásnál pedig ezt érzékelve, az adott sort megtöröd, és új sorban kezdesz (azaz a következő kirajzolandó karakter X koordinátája 0 lesz, az Y pedig Y+1).


A fájlkezelés egy más téma, a kurzor mozgatás, villogtatás megint más téma, a billentyűzet kezelés pedig megint egy harmadik téma.

Attól függően, hogy mennyire hardverközeli a programod, lehet, hogy foglalkoznod kell magával a fájlrendszer felépítésével is. Ha nem annyira hardverközeli, akkor kell írni egy hardverközeli köztes réteget, ami ismeri az adott fájlrendszert, és egy elvontabb, absztraktabb réteget, ami mondjuk bytestream-eket kezel (open, seek, write, close, append...), és ezt lefordítani a hardverközeli rétegre, azaz a tényleges fájlrendszer szintjére.


Kurzorkezelés, billentyűzetkezelés megint csak részben hardveres dolog. De igazából ott kéne elkezdeni, hogy egyáltalán milyen rendszerről van szó. Milyen a videómemória felépítése, van-e egyáltalán dedikált videómemória? Ha van, akkor mekkora, hány backbuffer fér bele? Hogyan történik a kirajzolás, memóriamásolással, vagy az aktuális kirajzolandó terület pointerének címátírásával?

Van-e interrupt kezelés, ha van, akkor milyen? Milyen videómódok vannak, miket támogat a rendszer...


Nem mindegy, hogy mondjuk a billentyűzetet hardveres megszakítás kezeli-e, vagy csak egy végtelen ciklus van, ami időnként ellenőrzi a billentyűzet állapotát? Mindkét megoldásra létezik példa...

2023. ápr. 29. 08:55
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!