LineColor default

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

LineColor default

Beitrag von erikafuchs »

Ich erstelle ein Koordinatensystem per Makro. In Libre Office sind die Linien schwer zu erkennen, sie sind zu blass. Ich kann jetzt für jede Linie ein dunkleres Grau und eine dickere Linie definieren, das sind aber etliche Linien. Das muss doch einfacher gehen. Die Linien haben ja auch eine Grundeinstellung in Farbe und Dicke - kann man diese Grundeinstellung ändern und im Dokument speichern?
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: LineColor default

Beitrag von mikeleb »

Hallo,
Ich erstelle ein Koordinatensystem per Makro.
Dann wäre es doch das beste, darin die gewünschte Einstellung vorzunehmen oder übersehe ich etwas?
Ich kann jetzt für jede Linie ein dunkleres Grau und eine dickere Linie definieren, das sind aber etliche Linien.
Versuchst du im Nachhinein die Linien zu ändern?
Gruß,
mikeleb
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: LineColor default

Beitrag von erikafuchs »

Hallo mikeleb,
vielleicht reden wir ja aneinander vorbei. Wenn in meinem Rechentrainer eine Aufgabe aufgerufen wird, in der ein Koordinatensystem benötigt wird, dann wird eine Routine aufgerufen, die nacheinander die waagerechten Gitterlinien, dann die waagerechten, die x- und y Achse, die Pfeilspitzen und die Einteilung und Beschriftung der Achsen. Anschließend wird u.U. noch ein Punkt, ein Polygon oder auch noch eine Spiegelachse erzeugt.

Die waagerechten und senkrechten Gitterlinien sind unter OpenOffice sehr schön zu erkennen, in LibreOffice nicht, je nach Einstellung des Monitors sind sie nahezu nicht zu erkennen (Bei der Arbeit bei uns im Computerraum, ging das an einem Monitor einigermaßen, am benachbarten möglicherweise gar nicht).

Wenn ich z.B. die waagerechten Linien mit:

Code: Alles auswählen

	for n=1 to anz
		oLinie=oDoc.createInstance("com.sun.star.drawing.LineShape")		'horizont.
			with oLinie
			.Position=erzeugePunkt(StartX+n*abst,StartY)
			.size=erzeugeSize(0,HH)
		end with      
		oPage.add(oLinie)
	next
In OO erzeuge, sieht das gut aus (auch wenn ich die Linienfarbe nicht definiere, ich glaube Grundeinstellung ist 15066597) in Libre Office muss ich die Linienfarbe extra definieren (zur Zeit rgb(100,100,100). Unter OpenOffice sieht das dann allerdings nicht mehr so gut aus. Ich muss also bei all den aufgezählten Objekten extra die LinienFarbe ausprobieren und dann anpassen. Und u.U. muss ich das auch noch bei anderen Zeichnungobjekten in meinem Programm anpassen. Da wäre es doch einfacher, die Grundeinstellung ändern zu können. In den OO Einstellungen kann ich ja das Farbschema von allen möglichen Linien anpassen, möglicherweise ist da ja auch eine Farbe für die mit Macro erzeugten Lineien dabei.

Die Frage, ob ich das im Nachhinein ändern will, verstehe ich nicht. Ich erzeuge das Koordinatensystem zur Laufzeit, wenn es von dem Aufgabentyp erfordert wird.

PS.: Wo finde ich eine Seite auf der Farben und rgb-Wert, oder auch der daraus berechnete Wert zu sehen ist? Und wie gibt man für die Farbe einen hexWert ein?
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: LineColor default

Beitrag von mikeleb »

Hallo,
ich gehe davon aus, dass die Zeichungsobjekte immer in der Standardfarbe erstellt werden, sofern man die Farbe nicht explizit vorgibt.
Mit .createInstance("com.sun.star.drawing.LineShape") wird automatisch ein Linienobjekt in Standardfarbe erzeugt.
Meines Wissen kann diese Standardfarbe nicht geändert werden.
Besser und flexibler ist es, die Farben des Objekts selbst zu definieren.
Es muss dann halt in der Routine, in der eine Linie gezeichnet wird, die Farbe (und ggf. Dicke, Linienart) festgelegt werden.
Ich würde mir eine Funktion für die Linien erstellen und dann entsprechend aufrufen:

Code: Alles auswählen

Sub test
	oDoc=ThisComponent
	linie_zeichnen(oDoc.DrawPages(0),1000,5000,12000,5000)
	for i=1 to 10
		linie_zeichnen(oDoc.DrawPages(0),1000+i*1000,5000-100,1000+i*1000,5000+100)
	next
end sub





Function linie_zeichnen (oBlatt,x0,y0,x1,y1, optional farbe, optional dicke)
	
	'Übergabeparameter:
	'oBlatt: Drawpage als Objekt auf der die Linie eingefügt werden soll
	'x0,y0: Startpunkt
	'x1,y1: Endpunkt
	'farbe: Linienfarbe (optional)
	'dicke: Liniendicke (optional)
	
	Dim aPosition as new com.sun.star.awt.Point
	Dim aSize as new com.sun.star.awt.Size
	Dim xShape as object

	'Standardfarbe festlegen
	If ismissing(farbe) then farbe=0
	'Standarddicke festlegen
	If ismissing(dicke) then dicke=20

	xShape=ThisComponent.createInstance("com.sun.star.drawing.LineShape")
	aPosition.X = x0
	aPosition.Y = y0
	xShape.Position = aPosition
	aSize.width = x1-x0
	aSize.height = y1-y0
	xShape.Size=aSize
	xShape.LineWidth = dicke
	xShape.LineColor = farbe
	oBlatt.add( xShape )
	'falls die erzeugte Linie als Objekt noch irgendwie weiter benutzt werden soll
	linie_zeichnen=xShape

End Function
Hier wird in einem Calcdokument (1. Tabelle) eine waagerechte Linie mit Teilstrichen erzeugt.
Die Farben legst du am einfachsten per RGB() fest. Daraus wir der interne Farbwert berechnet. Welche Farbe (gemäß der Fabrbezeichung z. B. grau5) welchen RGB-Wert hat, kannst du herausfinden, indem du (z. B. bei Linienfarbe o. dgl.) die gewünschte Farbe wählst und dann auf benutzerdefinierte Farbe gehst.
Gruß,
mikeleb
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: LineColor default

Beitrag von erikafuchs »

mikeleb hat geschrieben: Sa, 05.02.2022 17:56 Meines Wissen kann diese Standardfarbe nicht geändert werden.
Besser und flexibler ist es, die Farben des Objekts selbst zu definieren.
OK, danke, so (ähnlich) mache ich das ja schon. Ich überlege jetzt nur ob ich den Grauton ändere OO/LO.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: LineColor default

Beitrag von F3K Total »

Moin,
erikafuchs hat geschrieben: Sa, 05.02.2022 16:17 PS.: Wo finde ich eine Seite auf der Farben und rgb-Wert, oder auch der daraus berechnete Wert zu sehen ist? Und wie gibt man für die Farbe einen hexWert ein?
ich habe dazu eine Datei mit einem Makro erstellt, mit der man lernen kann, wie RGB, HEX und die Longinteger Farbnummer in OpenOffice grundsätzlich zusammenhängen.
FU.png
FU.png (104.31 KiB) 2347 mal betrachtet
Gruß R
Dateianhänge
Farbumrechnung.ods
(63.33 KiB) 95-mal heruntergeladen
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: LineColor default

Beitrag von erikafuchs »

Hallo Rik,
wieder mal phänomenal! Ganz toll - kann man das nicht irgenwo abspeichern wo auch andere das nutzen können?

Wie man rgb in int-Werte umrechnet wusste ich ausnahmsweise schon, sogar einen hex-Wert hätte ich noch hinbekommen. Meine Frage war, wie man einen hex-Wert eingibt: LineColor=(123456) und LineColor=rgb(100,100,100) und LineColor=hex? Ich weiß sogar, dass hex(zahl) einen String mit dem hex-Wert zurückgibt. Gibt es auch eine Funktion, die aus einem hex-Wert den integer-Wert zurückgibt? Ich habe nämlich eine Tabelle mit den hex-Werten der "in OO eingebauten" Farben gefunden und wollte mir das händische Umrechnen sparen.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: LineColor default

Beitrag von mikeleb »

Hallo,
so eine Rechentabelle ist doch fix geschrieben ...
Dateianhänge
farbcodes umrechnen.ods
(26.31 KiB) 90-mal heruntergeladen
Gruß,
mikeleb
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: LineColor default

Beitrag von F3K Total »

Moin Peter,
erikafuchs hat geschrieben: So, 06.02.2022 18:28 Ich habe nämlich eine Tabelle mit den hex-Werten der "in OO eingebauten" Farben gefunden und wollte mir das händische Umrechnen sparen.
Du brauchst nichts umzurechnen, man kann den Objekten mit Starbasic die Hex-Farben direkt zuordnen, wenn man &H voranstellt, ein Beispiel, mit der Farbe aus o.a. Beispieldatei:

Code: Alles auswählen

oShape.FillColor = &H1EEA80
Mit Xray nachgeschaut, Longinteger und RGB stimmen:
xray.png
xray.png (41.56 KiB) 2322 mal betrachtet
Gruß R
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: LineColor default

Beitrag von erikafuchs »

Ist ja ganz einfach, wenn man‘s weiß. Ich habe es mit einer Klammer probiert. Und in meinen Unterlagen habe ich keine Info dazu gefunden.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: LineColor default

Beitrag von F3K Total »

Moin,
http://www.dannenhoefer.de/faqstarbasic ... endet.html
Hier steht etwas dazu, wobei ich die letzten beiden Zeilen nicht verstanden habe.
Gruß R
Antworten