Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kuinka keppaan koordinaatit nöytöltä ja piirrän jonkin örvelön sinne...

Sivun loppuun

netman87 [29.03.2005 10:28:51]

#

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ä...

rndprogy [29.03.2005 10:39:36]

#

Tässä on ehkä jotain tarkoituksiisi viittaavaa.

netman87 [29.03.2005 12:38:26]

#

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...

Blaze [29.03.2005 13:35:51]

#

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).

netman87 [30.03.2005 09:27:00]

#

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...

sooda [30.03.2005 10:16:09]

#

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ä?

netman87 [30.03.2005 12:11:56]

#

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...

sooda [30.03.2005 12:17:25]

#

Mid, left ja right -funktiot on hyvä tuntea.

esakom [30.03.2005 14:06:01]

#

ja instr jos ei se pisteen paikka ole etukäteen tiedossa.

netman87 [31.03.2005 08:30:37]

#

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)

Antti [31.03.2005 09:52:17]

#

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ä

esakom [31.03.2005 10:05:59]

#

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.

netman87 [31.03.2005 13:55:59]

#

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.

Blaze [31.03.2005 14:13:20]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta