Forum » Programiranje » Katera WinAPI funkcija...
Katera WinAPI funkcija...
jeti51 ::
...bi bila najprimernejša za mojo stvar?
Rad bi prekopiral en bitmap na nek del Forme (kao recimo neko ozadje v enem pravokotnem delu okna), potem pa bi čez to ozadje potoval en tekst, levo-desno.
Ena ideja je bila, da bi s funkcijo BitBlt z nekega PictureBoxa prenesel sliko v buffer, čez napisal tekst in to prikazal. V naslednji iteraciji bi spet prenesel isto sliko v buffer, napisal čez isti tekst (le da na malo drugi poziciji) in ta buffer prikazal na istem mestu, kot prej... skratka, preprosta animacija teksta, vendar ne na enobarvnem ozadju temveč na ozadju s sliko.
Problem je, da mora biti PictureBox, s katerega kopiras sliko za ozadje, viden, sicer se slika ne prenese, ampak jaz nočem, da bi bil picturebox viden. Obstaja morda kaksna druga fukcija, ki bi mi eno sliko prilepila v en buffer v ozadju, kamor bi potem recimo še en tekst čez napisal in nato zadevo prikazal, kjer bi pač hotel? Oziroma, obstaja še kakšen lažji način, da naredim animacijo teksta na večbravnem ozadju (problem je brisanje teksta, jaz bi recimo kar vse skupaj prerisal s sliko ozadja in potem isti tekst na drugi poziciji napisal, ter potem buffer prikazal, ampak potem pridemo do težave, ki sem jo že zgoraj opisal - kako prekopirati sliko?).
Hvala za pomoč!
Rad bi prekopiral en bitmap na nek del Forme (kao recimo neko ozadje v enem pravokotnem delu okna), potem pa bi čez to ozadje potoval en tekst, levo-desno.
Ena ideja je bila, da bi s funkcijo BitBlt z nekega PictureBoxa prenesel sliko v buffer, čez napisal tekst in to prikazal. V naslednji iteraciji bi spet prenesel isto sliko v buffer, napisal čez isti tekst (le da na malo drugi poziciji) in ta buffer prikazal na istem mestu, kot prej... skratka, preprosta animacija teksta, vendar ne na enobarvnem ozadju temveč na ozadju s sliko.
Problem je, da mora biti PictureBox, s katerega kopiras sliko za ozadje, viden, sicer se slika ne prenese, ampak jaz nočem, da bi bil picturebox viden. Obstaja morda kaksna druga fukcija, ki bi mi eno sliko prilepila v en buffer v ozadju, kamor bi potem recimo še en tekst čez napisal in nato zadevo prikazal, kjer bi pač hotel? Oziroma, obstaja še kakšen lažji način, da naredim animacijo teksta na večbravnem ozadju (problem je brisanje teksta, jaz bi recimo kar vse skupaj prerisal s sliko ozadja in potem isti tekst na drugi poziciji napisal, ter potem buffer prikazal, ampak potem pridemo do težave, ki sem jo že zgoraj opisal - kako prekopirati sliko?).
Hvala za pomoč!
- spremenil: jeti51 ()
jeti51 ::
No, a res noben ne ve? Kako bi se dalo eno sliko imeti nekje v pomnilniku in jo nato nalepiti nekam na eno mesto v oknu?
BitBlt žal ne dela, če imaš sliko v pictureboxu, ki ni visible. Takrat ti ne skopira nič s tam, skopira ti le, če je picturebox visible. Zato bi rabil en način, da imaš sliko v pomnilniku in jo z BitBlt od tam preneseš na neko določeno pozicijo (v pictureboxu recimo).
Je morda še kakšna druga funkcija, ki je za to primernejša?
----------------------------------------------
m_lngImageHandle = LoadImage(App.hInstance, "c:\WINNT\Google0.bmp", IMAGE_BITMAP, 320, 200, LR_LOADFROMFILE)
Tako naložim sliko iz datoteke v pomnilnik in dobim njen handle. Kako si naj zdaj s tem pomagam, da to sliko nekam nalepim na neko pozicijo? BitBlt funkcija v tem primeru odpove, vsaj kakor sem jaz preizkušal...
Ali sem jaz kaj zaje6al?
LP!
BitBlt žal ne dela, če imaš sliko v pictureboxu, ki ni visible. Takrat ti ne skopira nič s tam, skopira ti le, če je picturebox visible. Zato bi rabil en način, da imaš sliko v pomnilniku in jo z BitBlt od tam preneseš na neko določeno pozicijo (v pictureboxu recimo).
Je morda še kakšna druga funkcija, ki je za to primernejša?
----------------------------------------------
m_lngImageHandle = LoadImage(App.hInstance, "c:\WINNT\Google0.bmp", IMAGE_BITMAP, 320, 200, LR_LOADFROMFILE)
Tako naložim sliko iz datoteke v pomnilnik in dobim njen handle. Kako si naj zdaj s tem pomagam, da to sliko nekam nalepim na neko pozicijo? BitBlt funkcija v tem primeru odpove, vsaj kakor sem jaz preizkušal...
Ali sem jaz kaj zaje6al?
LP!
Senitel ::
Najprej handle, ki ti ga vrne LoadImage castaš v HBITMAP. Potem si nardiš en nov DC z MojaSlika=CreateCompatibleDC(NULL), potem kličeš še SelectObject(MojaSlika,UnHBITMAPOdLoadImage) in to je praktično to.
Sedaj moraš dobit samo še DC od okna (GetDC(window)) in potem z BitBlt skopiraš "MojaSlika" na DC od okna, ter nato narišeš še tekst (TextOut) čez to sliko.
Sedaj moraš dobit samo še DC od okna (GetDC(window)) in potem z BitBlt skopiraš "MojaSlika" na DC od okna, ter nato narišeš še tekst (TextOut) čez to sliko.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] pixel scan z ThreadOddelek: Programiranje | 1171 (953) | perooo25 |
» | kako narediti program ki bere drugi programOddelek: Programiranje | 5751 (4064) | imagodei |
» | [C++]Kako narediti screenshot?Oddelek: Programiranje | 1516 (1087) | *ziga* |
» | Vstavljanje texta v image ter shranjevanjeOddelek: Programiranje | 1100 (962) | darkolord |
» | VC++ in DirektDrawOddelek: Programiranje | 1201 (1034) | Senitel |