Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kuvan siirtäminen

viljami [26.12.2005 22:32:23]

#

Mietin tuossa että jos teen sellasen aika beisikki puzzlen.

Mutta tössäs jo ennenkuin kerkes edes alottaa :D

Pitäs saada siirrettyä kuvaa hiirellä. Eli mulla ois picture tai image boxissa kuva ja kun otan siitä kiinni niin voin siirtää sen kuvan mihin vaan.

Onnistuuhan se tehdä kun kuunnellaan hiiren siaintia esim. hiiren matkamittari -ohjelmalla, ja siitä pukataan dataa picture1.Top:iin ja Picture1.Left:iin

Mutta eikö todella ole yksinkertaisempaa tapaa saada vain kuva liikkeelle...


Edit. Eiku sori

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture1.Top = Y
Picture1.Left = X
End Sub

Antti Laaksonen [26.12.2005 23:13:13]

#

Vai tarkoititko enemmänkin tällaista?

' Picture1.DragMode on oltava 1 - Automatic

Dim hx As Integer, hy As Integer

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
    Source.Left = X - hx
    Source.Top = Y - hy
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    hx = X
    hy = Y
End Sub

viljami [27.12.2005 21:39:55]

#

Jees... en ajatellu tossa omassa koodissa noin pitkälle... vaan pointti periaatteessa tuossa koodissa oli saada hiiren siaintia selville.

Tossa sun koodissa on viellä yks "ongelma". Jos hiirellä nappaa kiinni kuvan keskeltä, niin hiiri pitää siirtää kuvan ääriviivojen ulkopuolelle ennenkuin kuva siirtyy löystäseeä hiiren nappi. Ymmärsitkö mitä koitin selvittää?

Mutta en kyllä ole sitä itekkään ratkassu.

Antti Laaksonen [27.12.2005 22:02:58]

#

Totta puhut, mutta tämä lisäys korjaa asian:

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
    Source.Left = Source.Left + X - hx
    Source.Top = Source.Top + Y - hy
End Sub

viljami [27.12.2005 22:10:52]

#

Viellä jos ois silleen että heti kun nappaan kuvasta kiinni, niin kuva lähtee heti liikkumaan, eli heti jos liikutan hiirtä 5 pikseliä ylöspäin niin kuva liikku 5 ylöspäin, eikä vasta sitten kun löysään hiiren....

Heh. kokoajan keksii uutta ratkottavaa...

Jotenki tuntuu että toi on jo vaikeampi

setä [27.12.2005 23:46:59]

#

Siirtyy näin:

Dim X0 As Single, Y0 As Single
Dim L As Single, T As Single

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   X0 = X: Y0 = Y
   T = Picture1.Top
   L = Picture1.Left
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = 0 Then Exit Sub
   L = L + X - X0
   T = T + Y - Y0
   Picture1.Move L, T
End Sub

ScaleMode sama Picture1:llä ja formilla (Pixel).

viljami [28.12.2005 15:00:05]

#

Jepii, tuon ratkasin onneks itte pukkusen ennen kun luin ton sun koodin... mutta kiitti kuiteski!

Vastaus

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

Tietoa sivustosta