🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Basic: Mauskoordinate in Zeichnungskorrdinate

Alles zur Programmierung im LibreOffice.
Antworten
dimpflmoser
Beiträge: 16
Registriert: So 2. Feb 2014, 15:19

Basic: Mauskoordinate in Zeichnungskorrdinate

Beitrag von dimpflmoser » Di 4. Aug 2015, 12:57

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

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Basic: Mauskoordinate in Zeichnungskorrdinate

Beitrag von mikele » Fr 7. Aug 2015, 13:25

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 ;) )
Gruß,
mikele

dimpflmoser
Beiträge: 16
Registriert: So 2. Feb 2014, 15:19

Re: Basic: Mauskoordinate in Zeichnungskorrdinate

Beitrag von dimpflmoser » Mi 19. Aug 2015, 17:39

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

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Basic: Mauskoordinate in Zeichnungskorrdinate

Beitrag von mikele » Mi 19. Aug 2015, 20:35

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 ;)
Gruß,
mikele


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten