PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB .NET] Random position?



Kaspersky
17.07.2009, 18:50
Hallo,

Ich möchte einen button in einer random position bewegen lassen.
Ich hatte mal einen kleinen 2 zeilen code dafür aber hab ihn nich mehr.

Kann mir da wer aushelfen?
Greetz :)

inout
17.07.2009, 19:01
Müsste ungefähr so gehen (Pseudocode):


button.left=random(form.width);
button.top=random(form.height);

z0ND
17.07.2009, 19:17
Ich hätte da eine Lösung die funktioniert ;) :cool:



Public Class Form1
Dim random As New System.Random
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer1.Interval = 700
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Location = New Point(random.Next(10, 800), random.Next(10, 800))
End Sub
End Class



viel Spaß damit :)

z0ND

Kaspersky
17.07.2009, 19:35
@zond ja so ähnlich hatte ich das auch mal gemacht.
Aber wo leg ich da die maximum breite/höhe an?
Die "800" sins nicht

enco
17.07.2009, 19:38
Ich denke das sollte passen:

Public Class Form1
Private Sub Button1_MouseMove(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseMove
Button1.Left = (Rnd() * (Me.Width - Button1.Width)) + 1
Button1.Top = (Rnd() * (Me.Height - Button1.Height)) + 1
End Sub
End Class
Benötigt wird eine Form (Name egal) mit einem Button (Button1). Wenn du die Maus über den Button bewegst, dann wechselt der Button die Position.

z0ND
17.07.2009, 19:43
deleted -schwachsinn- :D

enco's lösung ist korrekt ;)

Kaspersky
17.07.2009, 19:43
@enco
Jap das ist genau der code wie ich hatte, aber anscheinend nicht ganz, ich hatte das irgentwie angestellt das er nicht über die form hinaus geht.
Doch bei diesem code kann der button verschwinden...

@zond
Nein die size ist festgelegt.

z0ND
17.07.2009, 19:49
das würde gehen mit eingrenzen



Dim random As New System.Random
Button1.Location = New Point(random.Next(10, Me.Size.Height - 50), random.Next(10, Me.Size.Width - 50))

Kaspersky
17.07.2009, 19:54
Naja okay manuell eingrenzen, bei encos code wäre dass dan so:

Button1.Left = (Rnd() * (Me.Width - 50 - Button1.Width)) + 1
Button1.Top = (Rnd() * (Me.Height - 50 - Button1.Height)) + 1klappt auch, muss man halt an die größe des steuerelements anpassen da nur die größe des steuerelements nicht ausreicht weil es bis zum letzten pixel ausnutzt und dann is das ding halt weg^^

enco
17.07.2009, 19:57
Ich dachte ich hätte schon richtig eingegrenzt ^^
Es reicht wohl nicht nur den Button 'abzuziehen'. Schau halt wie es passt.

Kaspersky
17.07.2009, 20:06
Jap genau, wenn man nur den button "abzieht" kann er trotzdem noch so weit weg das man ihn nicht mehr sieht, er ist dann genau 1 pixel neben/über/unter der form.
Also muss man ihn einfach doppelt abziehn.

Danke für die hilfe =)
Greetz