X und Y von einem Objekt in Pixeln
lima-city → Forum → Programmiersprachen → Basic
anscheinend
basic
beitrag
doubeln
eigenschaft
erste
falsch moment
formen
funktion
grad
image
koordinate
maeinheit
methode
objekt
pausen
pixel
schulen
sekunde
startposition
-
Hi,
Ich muss für die Schule ein kleines Spiel in VisualBasic programmieren. Da ich unter Linux kein VB hab, hab ich es erstmal in Gambas programmiert. Hat alles wunderbar funktiniert. Jetzt will ich das ganze in VB machen.
Ich will dass er die X und Y - Koordinaten von einem Image ändert. Ich habe eine Funktion die die Y-Koordinate immer ändert (X bleibt gleich). Ich benutze die Methode Objekt.Left und Objekt.Top, nur anscheinend benutzt VB als Maßeinheit keine Pixel. Kann man das ändern und wie kann ich das umrechnen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Natürlich verwendet VB (und VB.Net) Pixel als Maßeinheit,
aber vielleicht hast du einen Fehler in deinem Code?
-
Moment dadd stimmt nich. VB.NET hat Pixel, VB6 aber Twips. Machs aber doch einfach mit Twips, wenn du VB6 hast?? Du kannst das aber auch mit * Screen.TwipsperPixelX und Y umrechnen. Und ein son Raster auf der Form sind 120 Twips. Und wenn du VB.NET hast machst du in der tat was falsch.
-
Moment... das stimmt auch noch nicht ganz..
VB 6 verwendet standardmaessig Twips, man kann aber auf Pixel umstellen:
MsgBox "50 Pixel vom linken Rand entfernt:"
Me.ScaleMode = vbPixels
Me.Image1.Left = 50
MsgBox "50 Twips vom linken Rand entfernt:"
Me.ScaleMode = vbTwips
Me.Image1.Left = 50
-
Hi,
Also ich habe in der Tat VB 6, nur das einzige Problem ist jetzt noch, dass VB meckert dass es die Methode "ScaleMode" gar nicht gibt. -
Also meiner Meinung nach hat Battlesoft(Wie soll ich sonst sagen, Keck?) recht.
Hab des auch immer mit twips gemacht.
Ich benutze des z.b. um die Mauspos genau festzulegen
Du machst wenn ichs noch richtig weiß Object.top / screen.twipsperpixely
Das gibt dir dann die genau Position auf der Form!
Also wenn da 1 rauskommen würde, wäre das am oberen Rand der Form. Nicht am oberen Rand des Bildschirms!
Hab VB6 grad nich installiert (jaja pscht, keck) sonst könnt ichs testen, aber so müssts gehn!
Beitrag geaendert: 18.1.2007 21:38:33 von martix -
Hi,
Also ich habe in der Tat VB 6, nur das einzige Problem ist jetzt noch, dass VB meckert dass es die Methode "ScaleMode" gar nicht gibt.
Versteh ich net, dass es bei dir die Eigenschaft nicht gibt...
Vielleicht hast du eine andere Version? Ich hab nochmal bei mir nachgeschaut:
Microsoft Visual Basic 6.0 ServicePack 3
Und die Eigenschaft kann ich bei mir so aufrufen:
Form1.ScaleMode = vbPixels
-
Hi,
Also ich hatte als erstes beim Image den ScaleMode versucht zu ändern. Jetzt hab ich ma versucht vom UserForm, geht aber auch nicht.
Achso, ich sollte vielleicht noch sagen, dass ich das VB in Word benutze (muss für Schule)
Beitrag geaendert: 20.1.2007 17:57:22 von jpaket -
jpaket schrieb:
Hi,
Also ich hatte als erstes beim Image den ScaleMode versucht zu ändern. Jetzt hab ich ma versucht vom UserForm, geht aber auch nicht.
Achso, ich sollte vielleicht noch sagen, dass ich das VB in Word benutze (muss für Schule)
Beitrag geaendert: 20.1.2007 17:57:22 von jpaket
Nett von dir, dass du jetzt erst sagst, dass du nicht Visual Basic (VB) verwendest, sondern Visual Basic for Appliations (VBA)! Denn in VBA sind einige Funktionen und Eigenschaften nicht verfügbar!!
Und VB ist nicht das gleiche wie VBA!
-
Hi,
sorry. Hätte ich dran gedacht, hätte ich es euch gleich gesagt. Kann mir trotzdem vielleicht jemand helfen? -
Gilt nur für VBA:
Twips in Pixel umrechnen: MeinePixel = PointsToPixels(MeineTwips)
Pixel in Twips umrechnen: MeineTwips = PixelsToPoints(MeinePixel)
Beispiel für eine Bewegung von einem Steuerelement:
Option Explicit
Private Sub CommandButton1_Click()
Dim StartPosition As Integer
StartPosition = PixelsToPoints(0)
Dim EndPosition As Integer
EndPosition = PixelsToPoints(50)
Me.Image1.Left = StartPosition
Dim i As Integer
For i = StartPosition To EndPosition
Me.Image1.Left = i
Me.Repaint
Pause (0.05)
Next i
For i = EndPosition To StartPosition Step -1
Me.Image1.Left = i
Me.Repaint
Pause (0.05)
Next i
End Sub
Sub Pause(ByVal Sekunden As Double)
Dim Anfang As Double
Anfang = Timer
Do
Loop While Timer < Anfang + Sekunden
End Sub
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage