Seite 1 von 1

Basic: Mauskoordinate in Zeichnungskorrdinate

Verfasst: Di 4. Aug 2015, 12:57
von dimpflmoser
Hallo zusammen,

mit einem Mausklick-Listener hole ich mir über folgende Funktion die X- und Y-Koordinaten eines Mausklicks in einem Draw-Dokument:

Code: Alles auswählen

Function list_mouseReleased(objEvt) As Boolean
	' Testen, ob linke Maustaste
	If objEvt.Buttons AND com.sun.star.awt.MouseButton.LEFT Then
		' X- und Y-Koordinaten sichern
		dblXKoord = objEvt.X
		dblYKoord = objEvt.Y
		MsgBox "X: " & CStr(dblXKoord) & " | Y: " & CStr(dblYKoord)
		' MouseListener deaktivieren
		if dblXKoord <> 0 Then mouseListenerDeaktivieren
	End If
End Function
Bei diesen Koordinaten handelt es sich allerdings um Mauskoordinaten, die sich auf den aktuellen Bildschirmausschnit beziehen.

Da ich kein Mathematiker bin ist mir nicht klar, wie ich hieraus die Zeichnungskoordinaten berechnen kann. Ich habe vergeblich versucht hierzu informationen im Internet zu finden ...

Kann jemand helfen?

Danke

Re: Basic: Mauskoordinate in Zeichnungskorrdinate

Verfasst: Fr 7. Aug 2015, 13:25
von mikele
Hallo,

die Koordinaten des Mouse-Events werden (soweit ich gefunden habe) in Pixeln innerhalb des Fensters angegeben.
Die Größe eines Pixels ist systembedingt und kann durch die Funktion TwipsPerPixelX bzw. TwipsPerPixelY in die systemunabhängige Einheit Twips umgewandelt werden. Ein Twip ist ein Zwanzigstel eines PostScript-Punktes, der wiederum ein1/72 Inch groß ist.

Code: Alles auswählen

dblXKoord = objEvt.X 'x-Koordinate in Pixeln
dblXKoord_twips=dblXKoord*TwipsPerPixelX 'x-Koordinate in Twips
dblXKoord_inch=dblXKoord_twips/1440 'x-Koordinate in inch
dblXKoord_mm=dblXKoord_inch*25.4 'x-Koordinate in mm
bzw. zusammen:

Code: Alles auswählen

dblXKoord_mm = objEvt.X*TwipsPerPixelX/1440*25.4 'x-Koordinate in mm
Hilft das weiter? (Ich hoffe, ich habe es selbst richtig verstanden ;) )

Re: Basic: Mauskoordinate in Zeichnungskorrdinate

Verfasst: Mi 19. Aug 2015, 17:39
von dimpflmoser
Hallo Mikele, hallo zusammen,

vielen Dank für die Antwort - dein Lösungsvorschlag ist interessant, deckt aber leider nur einen Teil der Problemstellung ab, da man darüber noch nicht die Zeichnungskoordinaten ermittelt hat. (man muss ja noch die Koordinate relativ zum Format der Zeichnung ermitteln ...)

Trotzdem bis hierher vielen Dank.

Helmut

Re: Basic: Mauskoordinate in Zeichnungskorrdinate

Verfasst: Mi 19. Aug 2015, 20:35
von mikele
Hallo,

ich glaube wir verschiedene Vorstellungen von Zeichnungskoordinaten.
Die Koordinaten des Mouse-Events beziehen sich m.W. auf das Fenster, sprich die Zeichenfläche, sprich das Blatt Papier mit (0;0) in der linken oberen Ecke. Daraus sollte sich nun die Position auf dem Blatt (in mm) berechnen lassen.
Meinst du mit Zeichnungskoordinaten vielleicht Koordinaten, relativ zu einer bereits auf dem Blatt vorhandenen Zeichnung? -> Bitte mehr Infos ;)