Zum Inhalt springen

Mouse Position unterschiedlich


ASommer

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...