ASommer Geschrieben 19. März 2009 Geschrieben 19. März 2009 Hallo Zusammen, ich habe ein kleines Problem! Ich habe in Access mal eine Anwendung geschrieben in der ich die Mouseposition auslese. Folgend der Code aus Access Private Sub Bild_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) PosX = X PosY = Y End Sub So jetzt arbeite ich an der Version 2.0 und ich realisiere das ganze mit VB 2008. Dort habe ich folgenden Code Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click PosX = MousePosition.X PosY= MousePosition.Y End Sub So jetzt zum Problem in Access habe ich z.b. für X den Wert 1600 in meiner neunen Aplication habe ich bei X den Wert z.B. 78. Warum ist in Access ein so hoher Wert und in VB ein so niedriger wert für die selbe Position der Mouse? Ich brauche gleiche Werte da X und Y in eine Datenbank gespeichert sind! Und beim Abrufen der Werte X und Y die gleiche Position auf dem Bild erscheinen soll. Danke für eure Hilfe Zitieren
Crash2001 Geschrieben 19. März 2009 Geschrieben 19. März 2009 Also mir würden da zwei Möglichkeiten einfallen, wieso die Werte so unterschiedlich sein könnten. Möglichkeit A: Die Werte sind von der jeweils gegenüberliegenden Ecke ausgehend. Möglichkeit B: Es sind keine Pixelangaben, sondern wie z.B. bei der Consolenprogrammierung einfach Zeilen und Spaltenangaben. Zitieren
ASommer Geschrieben 19. März 2009 Autor Geschrieben 19. März 2009 Ne das kann nicht sein! In der oberen linken Ecke sind bei beiden X und Y = 0. Egal ob Access oder VB In der unteren rechten ecke des Bildes ist in VB x=800 y = 600 (800*600 also genau die Größe des Bildes) In Access x=11955 y = 8985 Also gibt es da wohl einen Unterschied! Aber was macht Acces bei MouseMove anders als MouseMove bei VB mit den Werten X und Y. Bei VB ist es also genau die Pixelposition Bei Access ??????? Von mir aus arbeite ich auch mit einem Umrechnungsfaktor aber welchen muss ich da nehmen. Zitieren
Klotzkopp Geschrieben 19. März 2009 Geschrieben 19. März 2009 Bei Access ??????? Doku lesen hilft: MouseMove Event [Access 2003 VBA Language Reference] Da steht: The X and Y arguments are always expressed in twips. Twip ? Wikipedia Der Umrechnungsfaktor hängt von der Bildschirmauflösung ab. Helfen könnte das: Support.TwipsPerPixelX Method (Microsoft.VisualBasic.Compatibility.VB6) Zitieren
ASommer Geschrieben 20. März 2009 Autor Geschrieben 20. März 2009 Danke der Hinweis ist genial, jetzt habe ich zumindestens verstanden warum das so ist! Aber da ich noch nicht so versiert bin in VB, kann mir jemand vielleicht helfen wie ich Twips in Pixel umrechnen kann? Ich würde dann gerne meine ganzen DB Einträge von Twips in Pixel ändern. Also wie schreibe ich es das das geht! Habe folgendes im www gefunden' Umrechnung Twips nach Pixel xPixel = xTwips / Screen.TwipsPerPixelX ' horizontal yPixel = yTwips / Screen.TwipsPerPixelY ' vertikal ' Umrechnung Pixel nach Twips xTwips = xPixel * Screen.TwipsPerPixelX ' horizontal yTwips = yPixel * Screen.TwipsPerPixelY ' vertikal Nur wenn ich im Code bei VB 2005 = xTwips = xPixel * Screen.TwipsPerPixelX eingebe, dann sagt mir VB das es TwipsPixelX ist kein Member von System.Widows.Forms.Screen was mach ich falsche ? Zitieren
Klotzkopp Geschrieben 20. März 2009 Geschrieben 20. März 2009 TwipsPerPixelX ist ein Member der Klasse Support im Namespace Microsoft.VisualBasic.Compatibility.VB6. Steht im letzten Link meines vorherigen Beitrags Es gibt auch eine direkte Umrechnungsfunktion: Support.TwipsToPixelsX Method (Microsoft.VisualBasic.Compatibility.VB6) Zitieren
ASommer Geschrieben 20. März 2009 Autor Geschrieben 20. März 2009 Danke für deine Hilfe doch irgendwie bin ich zu blöd. Wie binde ich das ein? So habe ich es gemacht, nur ist dabei der Wert X = 0 Public Class Abfrage Public Shared Function TwipsToPixelsX( _ ByVal X As Double _ ) As Double End Function Private Sub Fom_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load MsgBox(TwipsToPixelsX(1200)) End Sub End Class Die MsgBox wirf aber den Wert 0 aus ?????? Zitieren
Klotzkopp Geschrieben 20. März 2009 Geschrieben 20. März 2009 Das liegt wohl daran, dass deine selbstgebastelte TwipsToPixelsX-Funktion aufgerufen wird. Und die tut nichts. Die Funktion, die du aufrufen sollst, heißt mit vollem Namen Microsoft.VisualBasic.Compatibility.VB6.Support.TwipsToPixelsX. Um sie benutzen zu können, musst du deinem Projekt die Referenz Microsoft.VisualBasic.Compatibility hinzufügen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.