Eingefügtes Bild centern?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Eingefügtes Bild centern?

Beitrag von Toxitom »

Hey FraggeR,

also centern - das ist so einfach nicht. ein Grafik-Objekt wied ja an der gewünschten Position eingefügt, bei die an Position 0/0 (X/Y), also an der oberen linken Ecke. Centern kannst du es an sich nur, wenn du A) die Breite deiner Seite kennst (Ränder beachten) und b) die Breite deines Bildes/Grafik. Dann kannst du den gewünschten Punkt berechnen :-)

Die zweite Frage ist einfacher: Die orginal-Größe ermitteln. Diese ist ja eine Eigenschaft der Grafik (-datei) und dort auch auslesbar. Also, die Größe bekommst du mit:

Code: Alles auswählen

...
   page.add(img)
   oBildGroesse = img.GraphicObjectFillBitmap.GetSize
   hoehe = oBildGroesse.height   ' in Pixeln
   breite = oBildGroesse.width    'in Pixeln
   ...
Nur: Die Pixel nützen dir erst mal wenig - die interne Grafikeinheit ist eben 100stel Milimeter, du musst die also nun erst einmal umrechnen, um die Grafik entsprechend zu skalieren (die Grafik hat ja einen Rahmen drumherum....)

Nun sind bei verschiedenen Ausgangsmedien die Twips (kleinste Grafikeinheit im Computert) per Pixel leider unterschiedlich - insofern musst du die auch erst errechnen.
Es gibt einen Faktor (sieh mal OOo Hilfe - umrechnungsfaktoren), den kannst du verwenden:
Tips per Milimeter: 0,017636684 - definiere die als Konstante tpm:

Code: Alles auswählen

...
   const tpm = 0.017636684
   dim oGrafikGroesse  as new com.sun.star.awt.Size
   oGrafikGroesse.height = hoehe * TwipsPerPixelX * tmp * 100
   oGrafikGroesse.width = breite * TwipsPerPixelY * tmp * 100
   img.setSize(oGrafikGroesse)
   ...
Das setzt die Grafik in Orginalgröße ins Dokument :-)

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic