FillTransparenceGradient

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: FillTransparenceGradient

Re: FillTransparenceGradient

von F3K Total » So, 20.11.2011 19:36

Hallo DPunch,
vielen Dank für die Erklärung, mir wird wieder einiges klarer.
Ich war auch schon in der API unterwegs, konnte allerdings nix damit anfangen.
Nun werde ich versuchen Deinen Weg nachzuvollziehen, vielleicht komme ich dann beim nächsten Mal von selber drauf.

Beste Grüße von Rik

Re: FillTransparenceGradient

von DPunch » So, 20.11.2011 17:16

Aloha
F3K Total hat geschrieben:Wie bist Du auf das Anlegen des "com.sun.star.drawing.TransparencyGradientTable" gekommen?
Durch Recherche in
API: Module drawing, dort ist unter anderem der Service TransparencyGradientTable zu finden, und von dort zum
Service GenericDrawingDocument.
The following services gives access to resources used inside the document and let you add new resources.
(...)
BitmapTable
TransparencyGradientTable
(...)
Wenn man dann die Art und Weise kennt, wie im Dokument der Zugriff auf embedded images gehandled wird (BitmapTable), ergibt sich der Zugriff auf die TransparencyGradientTable von selbst.
F3K Total hat geschrieben:Wieso sind die jetzt in dem neuen Objekt? Ich kapier das nicht.
Weil das neue Objekt den Service zum Zugriff auf sowieso im Dokument vorhandene Elemente darstellt. So wie Dir der DatabaseContext die Services/Interfaces zur Interaktion mit Databanken bereitstellt - die Datenbanken existieren ja auch schon vorher, der DatabaseContext ist nur der Mittelsmann.
Insofern - nein, es gibt die "com.sun.star.drawing.TransparencyGradientTable" nicht im Dokument, wohl aber die definierten Styles, und die der Service ermöglicht Dir die Zugriffe darauf.

Re: FillTransparenceGradient

von F3K Total » Sa, 19.11.2011 16:07

Hallo DPunch,
Klasse, damit geht es, vielen Dank.
Verstanden habe ich das es aber nicht.
Wie bist Du auf das Anlegen des "com.sun.star.drawing.TransparencyGradientTable" gekommen?
Wenn ich das Object xraye sehe ich sowohl "mystyle" als auch "Transparency 1" und "Transparency 2", die Styles, die vorher im gleichen Dokument per Hand angelegt worden sind. Wieso sind die jetzt in dem neuen Objekt? Ich kapier das nicht.
Oder gibt es in meinem Dokument bereits ein "com.sun.star.drawing.TransparencyGradientTable"? Wo kann ich das finden?

Beste Grüße von Rik

Re: FillTransparenceGradient

von DPunch » Sa, 19.11.2011 13:55

Aloha

Man kann den TransparentGradient-Style per Makro anlegen und entsprechend verwenden, ala

Code: Alles auswählen

		(...)
		oSeite.add(Kreis)
		oTransGradTable = Doc.CreateInstance("com.sun.star.drawing.TransparencyGradientTable")
		Dim oTransGrad as new com.sun.star.awt.Gradient
		oTransGrad.StartColor = 16777215
		oTransGrad.style = 2
		oTransGrad.XOffset = 50
		oTransGrad.YOffset = 50
		oTransGrad.StartIntensity = 0
		oTransGrad.EndIntensity = 100
		If oTrGraTable.hasByName("myStyle") Then
			oTransGradTable.replaceByName("myStyle",oTransGrad)
		Else
			oTransGradTable.insertByName("myStyle",oTransGrad)
		End If
		Kreis.FillTransparenceGradientName="myStyle"
Aber frag mich nicht, warum es nur über Zuweisung eines bereits existierenden Styles zu gehen scheint, dafür hab ich viel zu wenig Ahnung von dem Kram.

Re: FillTransparenceGradient

von F3K Total » Mo, 14.11.2011 19:51

Na,
leider haben wir den Kern der Sache nicht getroffen.
Vielleicht weiß ein/e andere/r hier aus dem Forum, wie man einen Transparentverlauf zuordnet, ohne vorher einmal händisch eingreifen zu müssen?

Gruß R

Re: FillTransparenceGradient

von poidokan » So, 13.11.2011 22:29

Super! Vielen Dank für deine Geduld ;)

Re: FillTransparenceGradient

von F3K Total » So, 13.11.2011 12:22

Hallo,
du solltest noch die Verankerung einbauen, z.B. am Absatz:

Code: Alles auswählen

Kreis.AnchorType=0' entspricht: com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
Gruß R

Re: FillTransparenceGradient

von poidokan » So, 13.11.2011 10:17

Danke, das läuft jetzt auch bei mir. Bloss die X-Y-Koordinaten enden nicht dort, wo ich hinwill. Kann das daran liegen, dass ich das Ganze in einem Draw-Dokument erstellt habe? Dort entsteht der Kreis, wo er hinsoll.

Re: FillTransparenceGradient

von F3K Total » Sa, 12.11.2011 17:38

Hi,
anbei meine Beispieldatei.
Gruß R
Dateianhänge
oFillTransparenceGradient.odt
(10.91 KiB) 62-mal heruntergeladen

Re: FillTransparenceGradient

von poidokan » Sa, 12.11.2011 17:08

hmm, ich habe jetzt mit > Format > Fläche diverse Transparenzverläufe erstellt. Aber mit FillTransparencyGradientName erreiche ich keinen davon, gleich ob ich "Transparency 1" oder "Transparency 2" eingebe.

Re: FillTransparenceGradient

von F3K Total » Sa, 12.11.2011 12:56

Hallo,
tut mit Leid, ich kann es nicht sagen.
Es scheint so zu sein, dass, wenn man den Transparentverlauf einmal händisch einstellt, der Name "FillTransparenceGradientName" irgendwo im Dokument hinterlegt wird. Z.B. als "Transparency 2", aber auch als Transparency 3", Transparency 4" ... wenn man den Verlauf ändert. Auf diesen Verlauf kann man hinterher mit dem Namen zugreifen, und dann klappt es auch. Aber den Verlauf direkt zuzuweisen will mir auch nicht gelingen.

Gruß R

Re: FillTransparenceGradient

von poidokan » Sa, 12.11.2011 09:27

Vielen Dank schonmal. Kann es sein, dass ich dafür erstmal "Transparency 2" irgendwo erstellen muss?

Im momment bekomme ich com.sun.star.lang.IllegalArgumentException als Fehlermeldung.

Grüsse,
Gerald

Re: FillTransparenceGradient

von F3K Total » Do, 10.11.2011 21:48

Hi,
versuch es mal so

Code: Alles auswählen

Sub KreisVerlauf
   Dim Doc As Object
   Dim oSeite As Object
   Dim Kreis As Object
   Dim Punkt As New com.sun.star.awt.Point
   Dim Groesse As New com.sun.star.awt.Size
   Doc = ThisComponent
   oSeite = Doc.drawPage
   Kreis = Doc.createInstance("com.sun.star.drawing.EllipseShape")
   Punkt.x = 6000
   Punkt.y = 6000
   Groesse.Width = 3000
   Groesse.Height = 3000
   Kreis.Size = Groesse
   Kreis.Position = Punkt
   oSeite.add(Kreis)
   Kreis.FillColor=RGB(255,0,0)
   Kreis.FillTransparenceGradientName="Transparency 2"
   Kreis.LineStyle=0
End Sub
Gruß R

FillTransparenceGradient

von poidokan » Do, 10.11.2011 12:50

Hi,

Ich möchte einen roten Kreis erstellen, der nach aussen hin durchsichtig wird. Aber irgendwie klappt das nicht. Der Kreis behält die Standardfüllung...

Vielen Dank für jede Hilfe!
Gerald

Code: Alles auswählen

Sub KreisVerlauf
	Dim Doc As Object
	Dim oSeite As Object
	Dim Kreis As Object
	Dim Punkt As New com.sun.star.awt.Point
	Dim Groesse As New com.sun.star.awt.Size
	Doc = ThisComponent
	oSeite = Doc.drawPages(0)
	Kreis = Doc.createInstance("com.sun.star.drawing.EllipseShape")
	Punkt.x = 6000
	Punkt.y = 6000
	Groesse.Width = 3000
	Groesse.Height = 3000
	Kreis.Size = Groesse 
	Kreis.Position = Punkt
	oSeite.add(Kreis)
	Kreis.FillTransparenceGradient.Style = RADIAL
	Kreis.FillTransparenceGradient.StartColor = RGB(255,0,0)
	Kreis.FillTransparenceGradient.EndColor = RGB(0,0,0)
	Kreis.FillTransparenceGradient.StartIntensity = 100
	Kreis.FillTransparenceGradient.EndIntensity = 0
	Kreis.FillTransparenceGradient.XOffset = 50
	Kreis.FillTransparenceGradient.YOffset = 50	
End Sub

Nach oben