Seite 1 von 1

[Gelöst] Per Makro Bitmap importieren

Verfasst: Fr, 08.08.2014 14:39
von Rasakul
Hallo liebe Community!

Kennt jemand eine Möglichkeit per Makro Bitmaps zu importieren, so dass sie dann für Calc Diagramme als Hintergrund benutzt werden können?

Mein Google Suche verlief hierzu bisher nicht sehr erfolgreich...

Bin für jeden Denkanstoss dankbar!
LG
Rasakul

--------------------------------------------------------
Windows 7
OpenOffice 4.1.0
Java 7 Update 55
--------------------------------------------------------

Re: Per Makro Bitmap importieren

Verfasst: Fr, 08.08.2014 15:51
von lorbass
Schau mal, ob dir der Abschnitt 7.3.6 Wie kann man Grafiken in ein Sheet einbetten? in Michael Dannenhöfers StarBasic / OpenOffice.org Basic FAQ weiterhilft.

Gruß
lorbass



PS: Dein Java ist veraltet, Aktuell ist die Version 7.0_65

Re: Per Makro Bitmap importieren

Verfasst: Mo, 11.08.2014 08:44
von Rasakul
Hallo!

Danke für den Link, der hilft mir jedoch nur bedingt weiter

ich hab vielleicht mein Problem etwas zu allgemein formuliert: ich hab ein duch Makros erstelltes Diagramm in einem Calc-Sheet. Diagramme aktzeptieren (soweit ich zumindest informiert bin) nur Bitmaps als Hintergründe, deshalb suche ich nach einer Möglichkiet, diese automatisch zu importieren (manuell geht es ja mittels Draw - Format - Fläche - Bitmapmuster - importieren).

Eine Grafik, die einfach hinter einem transparenten Diagramobjekt steht, wäre hierfür zu aufwendig, da bei jeder Größenänderung des Diagrams die Position der Grafik ebenfalls neu berechnet werden müsste. Hinzu kommt, dass die Digramwand ja nicht die volle Fläche des Diagramobjektes einnimmt, diese müsste also zusätzlich auch noch mitberechnet werden.

Ist etwas verzwickt das Problem, ich weiß...

LG
Rasakul

PS: Danke fürr den Java Hinweis, das ist mir aber bewusst :) - arbeite allerdings auf einem Firmen-PC und hier ist erst Update 65 freigegeben, da hab ich nicht groß die Wahl....

Re: Per Makro Bitmap importieren

Verfasst: Mo, 11.08.2014 10:48
von balu
Hallo Rasakul,
ich hab ein duch Makros erstelltes Diagramm in einem Calc-Sheet.
Wie hast Du das Diagramm per Makro erstellt? Bitte häng hier eine Beispieldatei an.

Hast Du das Diagramm schon mal mittels XRAY oder MRI untersucht? Kennst Du dich überhaupt mit diesen Tools aus?

suche ich nach einer Möglichkiet, diese automatisch zu importieren
Soll beim erstellen des Diagramm jedesmal die gleiche Bitmap eingefügt werden, oder soll das nach möglichkeit variabel sein, also bei jedem erneuten erstellen eines Diagramm ein anderes Bitmap?

Willst Du die Diagrammwand oder die Diagrammfläche, oder beides mit einem Bitmap füllen?



Gruß
balu

Re: Per Makro Bitmap importieren

Verfasst: Mo, 11.08.2014 11:19
von Rasakul
Hallo balu!
balu hat geschrieben:Wie hast Du das Diagramm per Makro erstellt? Bitte häng hier eine Beispieldatei an.
https://forum.openoffice.org/en/forum/v ... =20&t=8991
Ich habe mich großteils an diesen Thread gehalten - war sehr mühselig, aber ist mir schlussendlich gelungen :) - Datei ist im Anhang
balu hat geschrieben:Hast Du das Diagramm schon mal mittels XRAY oder MRI untersucht? Kennst Du dich überhaupt mit diesen Tools aus?
Ja, kenne mich damit aus - im Diagram ist die Bitmap blöderweise nur als String referenziert:

Code: Alles auswählen

		'Diagrammhintergrund
		thisComponent.sheets.getByName("DataGraph").Charts.getByName("DataGraph").EmbeddedObject.Diagram.Wall.FillBitmapName = "MyBitMap"
balu hat geschrieben:Soll beim erstellen des Diagramm jedesmal die gleiche Bitmap eingefügt werden, oder soll das nach möglichkeit variabel sein, also bei jedem erneuten erstellen eines Diagramm ein anderes Bitmap?
Es reicht jedes Mal die gleiche - da die BitMap ja nur als String referenziert ist, sollte das einfügen in das Diagram selber kein Problem sein
Mir geht es eigentlich darum, den Vorgang "Draw - Format - Fläche - Bitmapmuster - importieren" zu automatisieren
balu hat geschrieben:Willst Du die Diagrammwand oder die Diagrammfläche, oder beides mit einem Bitmap füllen?
Die Diagrammwand

Code zum erstellen des Diagramms:

Code: Alles auswählen

Sub CreateDia
'Erstellt Diagramm
    Sheet = thisComponent.sheets.getByName("DataGraph")
    
    Dim charts As Object
    Dim Rect As new com.sun.star.awt.Rectangle
    Dim Source(1) As New com.sun.star.table.CellRangeAddress
   
       'Diagrammposition/-größe
    Rect.X = 0                ' x position of chart 
    Rect.Y = 0                ' y position of chart 
    Rect.Width = 20000        ' width of chart 
    Rect.Height = 20000        ' height of chart 
   
    charts=Sheet.Charts 
    
    'Basismodell erstellen(balkendiagramm)
    
    'selection of X data
    Source(0).Sheet = 0
    Source(0).StartColumn = 3 + i
    Source(0).StartRow = 5 
    Source(0).EndColumn = 3 + i
    Source(0).EndRow = 5
    'selection of y data
    Source(1).Sheet = 0
    Source(1).StartColumn = 2 + i
    Source(1).StartRow = 5 
    Source(1).EndColumn = 2 + i
    Source(1).EndRow = 5

    'altes Diagramm löschen, neues hinzufügen
    if charts.hasByName("DataGraph") then charts.removeByName("DataGraph")
    charts.addNewByName("DataGraph", Rect ,Source(), false, false)
    
    'Diagrameigenschaften anpassen
    chart=charts.getByName("DataGraph").EmbeddedObject
    With chart
        .Diagram = chart.createInstance("com.sun.star.chart.XYDiagram") 'xy Diagram
        .Diagram.SplineType = 0 
        .Diagram.SymbolType = -2
        .Diagram.DataCaption = 4    'Datenbeschriftung
        
        'X Achse
        .Diagram.HasXAxisTitle = True
        .Diagram.XAxisTiTle.string = "X Achse"
        .Diagram.XAxisTiTle.CharHeight = 16
        .Diagram.XAxis.CharHeight = 16
        .Diagram.HasXAxisGrid = True 
        .Diagram.XAxis.ReverseDirection = False
        
        'Y Achse
        .Diagram.HasYAxisTitle = True
        .Diagram.YAxisTiTle.string = "Y Achse" 
        .Diagram.YAxisTiTle.CharHeight = 16
        .Diagram.YAxis.CharHeight = 16
        .Diagram.HasYAxisGrid = True 
        .Diagram.YAxis.ReverseDirection = True
        
        'Überschrift
        .HasMainTitle = True
        .Title.string = "Titel"
        .Title.CharHeight = 16
        
        .HasLegend = FALSE    'Legende ausblenden
        
        'Diagrammhintergrund
'------------------------------------------------------------------------------
'        .Diagram.Wall.FillBitmapName = "MyBitMap"
'------------------------------------------------------------------------------
        .Diagram.Wall.FillStyle = 4
        
        'Achsen-Bereiche Einstellungen
        .Diagram.YAxis.AutoMax = FALSE
        .Diagram.YAxis.AutoMin = FALSE
        .Diagram.YAxis.AutoStepMain = FALSE
        .Diagram.YAxis.Max = 100
        .Diagram.YAxis.Min = 0
        .Diagram.YAxis.StepMain = 20
        
        .Diagram.XAxis.AutoMax = FALSE
        .Diagram.XAxis.AutoMin = FALSE
        .Diagram.XAxis.AutoStepMain = FALSE
        .Diagram.XAxis.Max = 75000000
        .Diagram.XAxis.Min = 0
        .Diagram.XAxis.StepMain = 15000000
    End With
End Sub
LG
Rasakul

Re: Per Makro Bitmap importieren

Verfasst: Mo, 11.08.2014 13:27
von balu
Hallo Rasakul,
war sehr mühselig, aber ist mir schlussendlich gelungen
Von mühselig kann ich nicht nur ein Liedchen singen, sondern ne ganze Arie. Musste mich mal mit nem Horizontal-Gestapelten-Balkendiagramm rumschlagen, mit diversen Sonderwünschen. Hatte es aber auch hinbekommen.
Rasakul hat geschrieben:
balu hat geschrieben:Hast Du das Diagramm schon mal mittels XRAY oder MRI untersucht? Kennst Du dich überhaupt mit diesen Tools aus?
Ja, kenne mich damit aus - im Diagram ist die Bitmap blöderweise nur als String referenziert:
Das ist ja schon mal sehr gut das Du dich damit auskennst.
Hab mir die Datei angeschaut, und mal ne winzige Kleinigkeit geändert um zu sehen ob Du soweit schon mal auf der passenden Fährte warst.
Aus dieser Code-Zeile

Code: Alles auswählen

'		.Diagram.Wall.FillBitmapName = "MyBitMap"
habe ich schlicht das gemacht

Code: Alles auswählen

		.Diagram.Wall.FillBitmapName = "Weltraum"
Dann habe ich in der Datei auf den Button geklickt, und siehe da, die Diagrammwand hatte das Bitmap Weltraum.
Warum das funktioniert ist ganz klar. Die Bitmaps sind fest im "Office"-System integriert, samt der dazugehörigen Pfadangaben. Da muss nicht lange gesucht werden, da ja der Pfad und der Name bekannt sind. Obwohl der Bitmapname in deutsch angezeigt wird, ist er aber mit englischem Namen gespeichert (space.jpg).

Nun wollte ich dir zeigen wie sich das mit dem String für die Bitmap verhällt damit man seine eigene Bitmap einfügen kann, aber blöderweise bekomme ich das noch nicht ans laufen. Theoretisch müsste das eigentlich so ablaufen.

Code: Alles auswählen

Dim sMeineEigeneBitMap as String
		sMeineEigeneBitMap = "Pfad_&_Dateiname"

		.Diagram.Wall.FillBitmapName = sMeineEigeneBitMap
Na ja! Mal schaun ob ich es noch hinbekomme, was ich aber momentan noch nicht so recht glaube.



Gruß
balu

Re: Per Makro Bitmap importieren

Verfasst: Mo, 11.08.2014 14:12
von balu
Ergänzung.

Ich glaube mein vorhin aufgezeigter theoretischer Weg ist falsch. Wenn mich mein linkes Hühnerauge nicht ganz täuscht müsste das wahrscheinlich entweder über die PropertiesToDefault, oder aber über die PropertyToDefault gehen. Blos welche von beiden, weiß ich nicht. Mit diesen ganzen Props.. bin ich nicht gut Freund :oops: .


Gruß
balu

Re: Per Makro Bitmap importieren

Verfasst: Di, 12.08.2014 08:27
von Rasakul
Trotzdem danke, dass du dir die Mühe gemacht hast, es nachzuvollziehen! :)

Vielleicht findet sich ja noch jemand, der eine Lösung kennt...

LG
Rasakul

Re: Per Makro Bitmap importieren

Verfasst: Mo, 18.08.2014 11:34
von Rasakul
Wurde hier gelöst: viewtopic.php?f=18&t=64455