Icons für Controls

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Akanel.

    Icons für Controls

    @Nofear23m
    Ich habe in einem deiner Projekte eine Datei Namens Icons.xaml gefunden die unter anderem Folgenden Code enthält.

    XML-Quellcode

    1. <Viewbox x:Key="IconAbort" x:Shared="False">
    2. <Canvas Width="24" Height="24">
    3. <Path Data="M13.34,8.17C12.41,8.17 11.65,7.4 11.65,6.47A1.69,1.69 0 0,1 13.34,4.78C14.28,4.78 15.04,5.54 15.04,6.47C15.04,7.4 14.28,8.17 13.34,8.17M10.3,19.93L4.37,18.75L4.71,17.05L8.86,17.9L10.21,11.04L8.69,11.64V14.5H7V10.54L11.4,8.67L12.07,8.59C12.67,8.59 13.17,8.93 13.5,9.44L14.36,10.79C15.04,12 16.39,12.82 18,12.82V14.5C16.14,14.5 14.44,13.67 13.34,12.4L12.84,14.94L14.61,16.63V23H12.92V17.9L11.14,16.21L10.3,19.93M21,23H19V3H6V16.11L4,15.69V1H21V23M6,23H4V19.78L6,20.2V23Z" Fill="{StaticResource DefaultIconBrush}" />
    4. </Canvas>
    5. </Viewbox>

    Kannst du mir genauer erklären was das genau ist und wie es funktioniert?
    Dadurch werden deine Icons dargestellt. Ich habe auch herausgefunden das die Buchstaben vor den Werten vorgeben in welche Richtung gezeichnet werden soll.
    Ist dies hier das richtige? docs.microsoft.com/de-de/dotne…imedia/path-markup-syntax

    Aber wie kommt man nun an die richtigen Werte wenn ich zum Beispiel einen Bleistift als EditierIcon haben möchte, ähnlich diesem hier. flaticon.com/free-icon/pencil-edit-button_61456
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo @Akanel

    Akanel schrieb:

    Ist dies hier das richtige?

    Ja, das ist korrekt.

    Akanel schrieb:

    Aber wie kommt man nun an die richtigen Werte wenn ich zum Beispiel einen Bleistift als EditierIcon haben möchte

    Es gibt hierfür mehrere möglichkeiten. Natürlich per Hand, ja das macht wohl niemand ;)

    Früher bei Blend dabei, heute extra und kostenlos zu laden das Microsoft Expression Design ist eine möglichkeit.
    Das ist ein Grafikprogramm welches Vektoren einfach in XAML exportieren kann. Daraus kannst du dir dann den Path holen.

    Es gibt aber auch einige Seiten mit Icons welche XAML kostenlos zur Verfügung stehen.
    z.b.: materialdesignicons.com/

    Diese Seite nutze ich sehr gerne.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hey,

    eine andere Möglichkeit, fertige Icons in XAML zu importieren, ist, den Weg über SVG zu gehen. Das geht zwar nicht immer glatt, ist aber meist einen Versuch wert.
    Bei dem Icon, das du als Beispiel gepostet hast, geht es z.B. Wenn man das Bleistift Icon als SVG exportiert, kann man diese in einem Editor öffnen.





    Den Path Code kannst du dann manchmal 1:1 in XAML übersetzen. Zusammen mit einer Viewbox kannst du das Icon dann beliebig anzeigen lassen:



    Anmerkung:
    Der letzte Screenshot ist von UWP, nicht WPF. Kann also sein, dass genau dieses Beispiel nicht mit WPF kompatibel ist. Ich habe allerdings schon einige Icons so "zum Laufen" bekommen. Ist also meist einen Versuch wert. ;)
    @Nofear23m
    Ich habe diesbezüglich noch eine Frage.
    Ich habe in einer deiner Dateien mal das Attribut x:shared=false gesehen.

    Habe dazu auch mal die MicrosoftDoku aufgesucht, aber bei der Übersetzung bekomme ich Augenkrebs und kann mir aus dem Buchstabensalat auch nichts gescheites zusammenbauen.
    Könntest du mir vielleicht erläutern was es damit auf sich hat? Intellisense bietet es so auch nicht direkt an, es wird aber akzeptiert (logisch).

    Es kann wohl nur in einem ResourceDictionary verwendet werden.

    Danke Dir
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo

    Gerne. Es ist so das wenn du eine Resource merhmals gleichzeitig verwendest (z.b. in einem DataTemplate für ein ListBoxItem) das die Resource (also die Icon) nur für deinen ersten Eintrag angezeigt wird wenn das x:Shared nicht auf false gesetzt wird.
    Was passiert dabei. Es wird der WPF verklickert das es nicht Shared sein soll (was eine Resource per Default ist). Somit wird immer eine eigene Instanz des Objekts erzeugt. Also nicht Shared.

    MS schreibt dazu in der MSDN:

    When set to false, modifies WPF resource-retrieval behavior
    so that requests for the attributed resource create a new instance for
    each request instead of sharing the same instance for all requests
    .

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    OK bei x:Shared= false wird für jede nutzung dieser Resource(in diesem Fall das Icon) eine neue Instanz erstellt, statt für alle nutzungen eine Instanz.
    Wenn ich das Attribut weg lasse ist es per default auf True.

    Habe ich verstanden.

    Danke Dir. :thumbup:
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.