Noniin eli miten piirrän kuvan vaikkapa 800x600 resolla olevassa koneessa kohtaan 100x100, Entä miten lukisin ikkunoiden koordinatit...
Olisi ideana tehtä iha pikkiriikkinen örvelö joka pomppis näytöllä ikkunoiden päällä...
Tässä on ehkä jotain tarkoituksiisi viittaavaa.
Joo tuo ois hyvä pohja mutta kun on liikaa koodia... niin ei voi tajuta... nimittäin toisten kirjoittamaa ohjelmaa on vaikea ymmärtää.
Mielellään erikseen koodi näytön lukuun, näytölle printtaamiseen ja ikkunoiden koordinaatteihin...
Kun tuntus nyt liian vaikealta opiskella tuosta...
Minusta kun tuo oli hyvin kommentoitu :(
No myönnetään, se on aika sekavan näköinen, johtuen siitä, että ikkuna luodaan WinApilla sen sijaan, että käytettäisiin VB:n valmista Formia.
Ruudulle voi toki piirtää ihan luomatta ikkunaakin, mutta minä en ainakaan saanut sitä toimimaan ilman välkkymistä. Tällöin piirretään ikkunaan, jonka Device Context on 0. Tämän nollaikkunan päivittäminen kuitenkin aiheuttaa *kaikkien* muiden ikkunoiden uudelleenpiirtymisen, jonka ansiosta esimerkiksi mahdollisesti näkyvissä olevat työpöydän ikonit välkkyvät melko infernaalisesti.
Noh, joka tapauksessa piirtäminen tapahtuu BitBlt funktiolla, josta löytyy lisää hakemalla esim. tältä foorumilta ja tuo muiden (aktiivisen) ikkunoiden koordinaattien selvittäminen selvinnee tuosta minun esimerkistäni (katso TimerProc -funktiota).
Nyt en ihan tajunnut... =( kun olen vielä melko "newbie" näiden kanssa... Jos joku viitsisi antaa koodin jossa olisi
kohta johon voi kirjoittaa itse koordinaatit ja kuva tiedoston nimen... Jotta ymmärtäisin itse tuota... Tuosta koodista joka oli valmis en saanut paljon irti.. Onnistuin vaihtamaan kuvan mutta kun tuo ei toiminut nopeaa kokeiltuna gif:illä ja bmp:tä on vaikea muokata juuri tuolla tausta värillä... (väri 255,0,255 oli läpinäkyvä ja minulla oli seassa 255,1,255 väriä joka näkyi ikkunan päällä olevassa kuvassani (todella sotkuisen näköisenä :/ ))
Tarkoitus olisi tehdä ohjelma joka timerin mukaan piirtäisi tuon uudestaan ja uudestaan... Ottaen aktiivisen ikkunan koordinaatit ja "kävelisi sen kohdalle". Kuva tyyppinä käyttäisin gif:iä (kun siihen on helppo tehdä läpinäkyvä tausta). Minun tulisi siis saada lukea aktiivisen ikkunan koordinaatit, muiden ikkunoiden koordinaatit, työpöydän koordinaatit,resoluutio ja pystyä vaihtamaan noin puolen sekunnin välein kuvatiedostoa (ikkunan vilkkumatta pahasti),
Lisäksi Tahtoisin siepata hiiren koordinaatit...
Osaan jo lukea hiirtä, Vaihtaa kuvaa ja käyttää timeriä, niin jakuunnella näppäimistöä (jota voisin tarvia ohjelman ohjaukseen) eli tarvittava pätkö olisi myös että jos painaa esim f8 niin hiiren osoittimen kohdalle tulisi valikko josta voisi sammuttaa ohjelman ja mennä sen optionssiin asetukset tallentaisin ini tiedostoon ja lukisin sen muutoksia tehdessä ja ohjelman käynistyessä.
Eli jelppiä tulemaan ja linkki sivustolle joka kertoo mitkä koodit ovat funktio näppäimillä...
Kiitoksia etukäteen...
Giffeihin nyt ei ainakaa vb:ssä ole valmista tukea, saat ettiä jonkun kirjaston sille tai tehdä tuen ite. Mikset leiki tolla läpinäkyvyydellä miten Blaze tekee tossa, eli magenta läpinäkyvä?
Sitte olis vaikeampi tehä kuvia, kun niitä tulee useampi...
Olen saanut jotain pientä jo tehtyä... mutta miten eroteltiin jostain muuttujasta jonkin merkin kohdalta erikseen... esim "100.4343" muutettas "100" ja "4343"???
Kiitoksia soodalle ja parille muulle jonka koodeista olen saanut jotain irti...
ja instr jos ei se pisteen paikka ole etukäteen tiedossa.
Dodii... Jotenkin osasin nuita käyttää mutta kun muuttuja on tehty tyyliin "Dim eka as integer" ja se menee desimaaleiksi koordinaateissa... Jolloin yksinkertainen ohjaus koodini menee sekaisin... Eli olisi parempi jos siitä saisi muutettua jollain käskyllä suoraa kokonaisluvun.
Kun en saanut nuilla mid,left,rigth ja instr toimimaan...
Muuten olen saanut jo ohjelmani jonkin laiseen kuntoon mutta liikkeessä on pientä bugia ja ikkuna pitäisi saada läpinäkyväksi niin että itse kuva jää näkyviin tai vastaava.
Tässä on koodi liikkumiseen...
If ylös < mentäväkohta then ylös = ylös + 15 summa = ylös + 100 if summa < mentäväkohta then ylös = ylös + 45 end if end if
...Ja sama toistuu joka suunnan kanssa.
Eli miksi tuo sama koodi ei toimi joka suuntaan?
Siis siis liikuttamani ikkuna menee nopeammin ylös,alas ja oikealle, mutta ei vasemmalle? Koodi on juuri sama (tietenkin -,+,> ja < merkit vaihdettu oikein)
Hmmm - Integer-tyyppinen muuttuja on aina kokonaisluku. Ei ole mahdollista että tyyliin "Dim eka as integer" muuttujaan saat tallennettua arvon "100.4343". Se pyöristyy aina 100:ksi.
Mid, Left, Right ja Instr toimii vain ja ainoastaan String-tietotyypille.
Komennolla Round voit pyöristää desimaaliluvun kokonaisluvuksi:
Dim a as Double
a=100.4343
msgbox Round(a)
- Palauttaa 100
Round pyöristää lähimpään kokonaislukuun - eli Round(100.5656) palauttaa 101
Int - komento erittelee luvusta kokonaislukuosuuden:
Dim a as Double
a=100.5643
msgbox Int(a)
- Palauttaa 100
Desimaaliosuuden saat vähentämällä saadun kokonaisluvun alkuperäisestä
Antti antoikin jo kattavan vastauksen sun ongelmaan, käytä siis desimaaleilla Double-tyyppiä. Jos jostain syystä sun pitäisi muuttaa integer tai double tekstiksi, käytä CString-funktiota. Esim. jos näytät koordinaatteja ruudulla tai tulostat jotain arvoja debuggi-ikkunaan.
No niin kiitoksia... Ja ne desimaali kyllä tuli integer:iin
koska oikea reso on esim 800x600 ja vb:ssä se on 15 kertanen
Eli jos ohjaan ikkunaa vb:n omilla koordinaatti yksiköil tai miks niitä sanotaan... niin tulee helposti desimaaleja, kun olen laittanut formin jota siirtelen hieman kauvemmas hiirestä jota se vielä tässä versiossa seuraa....
Nyt on kaikki muu selvää paitsi että miten saan välkkymättömänä kuvan siirreltäväkseni?
Niin ja kysymys: Mitähän kaikkea vb:llä voi tehdä?
Kun löysin netistä http-serveri,proxy,msn ja muita mielenkiintoisia koodeja.
netman87 kirjoitti:
Eli jos ohjaan ikkunaa vb:n omilla koordinaatti yksiköil tai miks niitä sanotaan...
Twipeillä? Ei kannata, vaihda formin ScaleMode pikseleiksi (3) ja unohda mokomat typerät twipit.
netman87 kirjoitti:
Niin ja kysymys: Mitähän kaikkea vb:llä voi tehdä?
Kun löysin netistä http-serveri,proxy,msn ja muita mielenkiintoisia koodeja.
Käyttis on mahdoton, kuten myös Half-Life 3. Kaikki muu taitaakin sitten onnistua.
Aihe on jo aika vanha, joten et voi enää vastata siihen.