SVG-Icons mit stroke-Color

Begonnen von Damian, 11 April 2021, 17:34:04

Vorheriges Thema - Nächstes Thema

justme1968

angenommen das icon schaut so aus:<?xml version="1.0" standalone="no"?>
<svg width="160" height="140" xmlns="http://www.w3.org/2000/svg" version="1.1">
  <rect x="10" y="10" width="100" height="100" stroke="#000000" fill="#000000"/>
</svg>


mit @red ändere ich bisher nur das fill. d.h. ich bekomme ein rotes rechteck mit schwarzem rand. dieses ist auf rotem (als umriß) und auf schwarzem untergrund zu sehen. das verhalten würde ich nicht als fehler bezeichnen sondern beabsichtigt. genau so haben früher ja z.b. maus zeiger funktioniert.

mit der änderung bekomme ich ein rotes rechteck mit rotem rand. dieses ist auf rotem untergrund nicht mehr (d.h. auch nicht als umriß) zu sehen. d.h. das verhalten hat sich geändert.

da ganze wäre noch viel auffälliger wenn ich mit stroke noch etwas in schwarz auf die rote fläche gemalt habe.

ich hatte z.b. früher ein mülltonnen icon das einen schwarzen rand hat damit es wenn es grau (restmüll bei uns) eingefärbt wird auf den schwarzen und grauen fhemweb zeilen besser sichtbar ist.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

Zitaticon@farbe1:farbe2 => füllung bekommt farbe1 und rand bekommt farbe2.
die idee finde ich gut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Eigentlich(TM) sollte ein SVG weder fill noch stroke spezifizieren, das muesste im CSS jeweils gesetzt werden, auch einzelne Elemente muessten ueber CSS gefaerbt werden, und nicht ueber FHEMWEB. FHEMWEB muss nur dafuer sorgen, dass die Elemente die passenden Klassen bekommen. Aber bevor wir die Welt umbauen, schlage ich vor die Idee mit "@fill:stroke" zu implementieren, damit koennte man fill und stroke jeweils optional setzen.

@Damian: hast Du was dagegen?

xenos1984

Zitat von: justme1968 am 14 April 2021, 08:45:44
für neue icons löst kann man das lösen in dem man dunkelgrau 010101 verwendet. den unterschied sieht man sicher nicht.

So weit ich das sehe, wird nur #000000 ersetzt - wenn du also schwarz haben willst und stattdessen black schreibst statt numerischen Codes, bleibt es schwarz.

Damian

Zitat von: rudolfkoenig am 14 April 2021, 11:45:12
Eigentlich(TM) sollte ein SVG weder fill noch stroke spezifizieren, das muesste im CSS jeweils gesetzt werden, auch einzelne Elemente muessten ueber CSS gefaerbt werden, und nicht ueber FHEMWEB. FHEMWEB muss nur dafuer sorgen, dass die Elemente die passenden Klassen bekommen. Aber bevor wir die Welt umbauen, schlage ich vor die Idee mit "@fill:stroke" zu implementieren, damit koennte man fill und stroke jeweils optional setzen.

@Damian: hast Du was dagegen?
Ich habe nichts dagegen, hinterfrage aber den Sinn der zweiten Angaben.

Ich denke, die meisten "programmieren" nicht die Icons, sondern erstellen (malen) sie mit Programmen wie Inkscape. Was das Programm aus der Zeichnung macht, kann sehr unterschiedlich sein.

Das heißt, ob da ein stroke drinsteht oder fill, bestimmt eher die Software und nicht der User, daher ist die Option nur dann interessant, wenn man die SVG-Syntax intern kennt und sie bei der Erstellung des Icons auch beeinflussen kann - das dürfte für die meisten erstellen Icons nicht der Fall sein.

Abgesehen davon, stroke ist nicht immer nur der Rand von etwas, sondern kann z. B. ein nicht ganz gefüllter Kreis (Ring) sein, der irgendwo mitten im Bild liegt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

justme1968

gerade bei inkskape gibst du doch füll- und linienfarbe an. d.h. fill und stroke.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Damian

Zitat von: justme1968 am 14 April 2021, 14:19:58
gerade bei inkskape gibst du doch füll- und linienfarbe an. d.h. fill und stroke.

Das finde ich gut, wenn sich da einer gut auskennt. Dann kannst du mal schauen, wie man den Ring von stroke in fill verwandelt, ohne unnötige Daten über path zu produzieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

ZitatIch habe nichts dagegen[...]
Gut, dann habe ich es wie bestellt implementiert.

Btw. diese door_shutter_XXX.svg icons sind noch merkwuerdiger: da wird fill="none" stroke="#000000" gesetzt, mit dem Ergebnis, dass das explizite fill mit der @ Syntax nicht funktioniert (es wird nur #000000 ersetzt), aber CSS kann es umfaerben.

P.S.: Kinder, hoert auf zu streiten :)

frank

ZitatGut, dann habe ich es wie bestellt implementiert
prima,
unerschöpfliche neue möglichkeiten.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Damian

Zitat von: rudolfkoenig am 14 April 2021, 16:49:23
P.S.: Kinder, hoert auf zu streiten :)

Wer streitet denn hier :)

Wenn du mich meinst. Ich wollte doch nur ernsthaft wissen, ob man das Icon aus Inkscape generiert mit fill statt mit stroke hinbekommt. Ich weiß nicht was ich da einstellen muss.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

habl

kann es sein, dass die Funktion nicht mit devStateIcon kompatibel ist?
Ein:
attr EV_WALLBOX devStateIcon Frei:ev_cssplug@green:green

führt den Befehl "green" aus, oder gibt es hier eine andere Schreibweise?

rudolfkoenig

Zitatkann es sein, dass die Funktion nicht mit devStateIcon kompatibel ist?
Ja: "devStateIcon: Space separated list of regexp:icon-name:cmd triples, icon-name and cmd may be empty."

Ich habe jetzt @ als alternativen Trenner zwischen fill- und stroke-Farbe hinzugefuegt.

habl

Zitat von: rudolfkoenig am 23 Dezember 2021, 10:30:15
Ja: "devStateIcon: Space separated list of regexp:icon-name:cmd triples, icon-name and cmd may be empty."

Ich habe jetzt @ als alternativen Trenner zwischen fill- und stroke-Farbe hinzugefuegt.

Top, geht

vielen lieben Dank für schnelle einbinden!