Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Direktno iscrtavanje po ekranu

[es] :: C/C++ programiranje :: Direktno iscrtavanje po ekranu

[ Pregleda: 2702 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

6ypek
burek pekaric

Član broj: 40233
Poruke: 25
*.nat-pool.nsad.sbb.co.yu.



Profil

icon Direktno iscrtavanje po ekranu24.11.2004. u 21:32 - pre 237 meseci
Pozdrav svima :)

Postavio sam juce jedno pitanje tamo na Delphi forumu, pa sam se posle
setio da je to ipak vishe tema koja odgovara C/C++ oblasti.. Pa ako se
moderatori ne ljute, postavio bih to pitanje i ovde.. O:)

Elem, evo kopija poruke:

Citat:
Pozdrav,

treba mi kod/primer ili bilo sta sto moze da mi pomogne oko toga
da bih napravio proceduru kojom bih iscrtavao neki logo, direktno na ekran.
Konkretno, taj logo, slicica, ili bilo sta sto budem hteo da iscrtam bi
trebalo da je NON STOP na ekranu, bez obzira da li korisnik igra igru,
pise neki dokument, surfuje internetom...

Resenja tipa pravljenja transparentnih prozora nisu ono sto mi treba,
dakle, treba mi info o tome kako se nesto salje direktno na ekran, a ne
ono GetDesktopWindow i tako to..

Hvala unapred svima koji budu znali nesto na ovu temu..


Eto, pa nadam se da ipak postoji takvih dusha, koje su spremne da
pomognu i ovako napacjenom programeru :D
 
Odgovor na temu

Lazar-I

Član broj: 6950
Poruke: 169
*.jagodina.beotel.yu.



+727 Profil

icon Re: Direktno iscrtavanje po ekranu24.11.2004. u 22:15 - pre 237 meseci
Ovo me je podsetilo na programčić kojim pre par godina zezao cimera. Ceo program, koji je ispisivao "Ja sam haker tvoj ne imaj drugih hakera sem mene", je imao samo tri ili četiri linije, na žalost nemam izvorni kod kod sebe i nemam instaliran MSDN. Glavna stvar je samo da dobijes pokazivac na kontekst ekrana evo pribljižnog koda (koliko se sećam Win API-ja) :
Code:

//nisam sigruran da se funkcija bas tako zove, ali bitna je NULL 
//vrednost koja ide na mesto HWND parametra
//trazi u Win API helpu funkcije koje se odnose na Device Context    
DC * pDc=GetWindowDC(NULL); 

//naravno ova f-ja trazi jos nekoliko parametara
pDc->TextOut("Ja sam..."); 

//mozes da crtas sta god zelis evo primera za liniju 
//(opet sa izostavljenim nekim parametrima)
pDc->MoveTo(x,y);
pDc->LineTo(z,w);


Naravno ukoliko neki prozor pređe preko ovako iscrtanog prikaza, prikaz se gubi. Moje rešenje (najjednostavnije ali ne i najjbolje) je bilo da se celi prikaz iscrtava u jednoj beskonačnoj petlji. Samo je malo treperelo kad je igrao igrice, ti ćeš verovatno
tražiti bolje rešenje.

Nadam se da je ovo bilo od pomoći
 
Odgovor na temu

6ypek
burek pekaric

Član broj: 40233
Poruke: 25
*.nat-pool.nsad.sbb.co.yu.



Profil

icon Re: Direktno iscrtavanje po ekranu25.11.2004. u 10:42 - pre 237 meseci
Citat:
treba mi info o tome kako se nesto salje direktno na ekran, a ne
ono GetDesktopWindow i tako to..


hehe :)
ako vidis liniju u tvom kodu koja kaze:
Code:
DC * pDc=GetWindowDC(NULL);

to je u stvari ono GetDesktopWindow :)

elem, video sam da su ljudi pricali na tu temu i ovih dana sam preplavio
forume sa ovim pitanjem, pa cemo videti ako postoji neki strucnjak pa
cu vam kopirati ovde ono sto budem dobio, ako nekog zanima..

Zaista mislim da je to cool ideja, da recimo startujete neki sistemski
servis koji ce da vam odrzava logo na ekranu.. ;)
Samim tim sto niko to dosad nije koristio u siroj upotrebi :)
Morate priznati da je bas neobicna ideja :))
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
*.metrohive.neobee.net.

Jabber: DarkMan


Profil

icon Re: Direktno iscrtavanje po ekranu25.11.2004. u 17:55 - pre 237 meseci
Mozda bi mogao da isprogramiras logo koristeci directx i overlay. Overlay ti je uvek iznad svih prozora (hardverski se iscrtava zadnji). Medjutim problemi sa njim su:
- nemaju ga starije kartice (nisam siguran ali mozda one pre geforce-va)
- drugi program koji koriste iskljucivo overlay za prikaz nece raditi zato sto sve kartice imaju samo jedan overlay (neki video plejeri ili program za TV kartice, znam da DScaler nece da radi bez overlay-a)
- ne znam sta ce se desiti kada se pokrene neka igra (ili program) koji koristi directx i promeni rezoluciju

Verovatno postoje neki drugi problemi ali mislim da vredi probati.
 
Odgovor na temu

Lazar-I

Član broj: 6950
Poruke: 169
*.ptt.yu.



+727 Profil

icon Re: Direktno iscrtavanje po ekranu26.11.2004. u 11:58 - pre 237 meseci
Rekao sam da sam pisao napamet, pogledao sam koja ti tačno funkcija treba i to je
Code:

HDC dc=GetDC(NULL);

Imam i jedan Delphi programčić koji iscrtava krugove u raznim bojama preko svih prozora na trenutnoj poziciji miša, tako da sam 100% siguran da radi.
Mislim je tvoja ideja sa logom dobra samo ako želiš da korisnici namrznu tvoju firmu :)
 
Odgovor na temu

6ypek
burek pekaric

Član broj: 40233
Poruke: 25
*.nat-pool.nsad.sbb.co.yu.



Profil

icon Re: Direktno iscrtavanje po ekranu28.11.2004. u 16:59 - pre 237 meseci
Citat:
darko79: Mozda bi mogao da isprogramiras logo koristeci directx i overlay.

Da li imas mozda neke primere u directx-u kako se direktno pristupa ekranu ili
eventualno, kako se koristi overlay? :)
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
*.metrohive.neobee.net.

Jabber: DarkMan


Profil

icon Re: Direktno iscrtavanje po ekranu30.11.2004. u 17:51 - pre 237 meseci
Ako imas neki noviji MSDN iz Visual Studia ili neki DirectX SDK (7 ili veci) mozes naci u dokumentaciju o overlay-evim.
Ako nemas mozes pogledati i online dokumentaciju MSDN-a na microsoftovom sajtu.
Objasnjenje kako radi overaly pogledaj ovde
http://msdn.microsoft.com/arch...w7/directdraw7/ddover_7uif.asp

A turorijal sa kodom ovde
http://msdn.microsoft.com/arch...aw7/directdraw7/ddtut_1nef.asp

Inace da bi nesto isprogramirao ipak ce ti trebati DirectX SDK. Njega mozes besplatno skinuti sa mircrosoftovog sajta a jedini problem je sto je velik (verzija 9 je preko 200MB ali zato sadrzi svu dokumentaciju i velik broj primera).

PS: Sa overlay-em mozes postici lepe efekte, kao na primer onaj u WinAmp-ovom Visualization Studiu (ides na Settings->Display i ukljuci "Overlay mode" i "Set desktop to color").
 
Odgovor na temu

[es] :: C/C++ programiranje :: Direktno iscrtavanje po ekranu

[ Pregleda: 2702 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.