Window-Controls Ganz Einfach!

    • Allgemein

      Window-Controls Ganz Einfach!

      Hallo, und willkommen zu einem kurzen und knappen Tutorial, wie ihr ganz einfach skalierbare Window-Icons in euer Programm kriegt.

      Wenn ihr mit eigenen UIs am experimentieren seid, dann kam euch mit Sicherheit schon mal die Frage auf: "Wie kriegen das die anderen Programme hin, dass die Icons immer gleich aussehen?"

      Manche von euch werden dann zu statischen Bildern zurückgreifen, und das könnt ihr auch weiterhin machen, wenn euch so beliebt.
      Am Besten ist es, jedoch, wenn ihr die Methoden von Microsoft euch zu gunsten nimmt; nämlich Marlett.

      Marlett ist eine Schriftart, die Microsoft Anfang der 90er entwickelte. Diese Schriftart, enthält alle "Icons", die ihr oben-rechts seht: minimieren, maximieren/wiederherstellen und schließen.

      Leider unterstüzt das Forum diese Schriftart nicht, also kann ich es euch direkt hier zeigen.

      Ich benutze diesen Trick jedoch in eines meiner derzeitigen Projekte, wo ich einem anderen Forum-Mitglied helfe.

      Hier sind schon mal die Zeichen, die ihr am allerwarscheinlichsten brauchen werdet:
      • 0 = Minimieren
      • 1 = Maximieren
      • 2 = Wiederherstellen
      • r = Schließen
      ​Hier nochmal Beispiel-Code, wo das verwendet wird:

      XML-Quellcode

      1. ​<Button x:Name="closeButton" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" Padding="3" BorderBrush="{x:Null}" Background="Transparent" >
      2. <TextBlock FontFamily="Marlett" FontSize="15" Text="r" />
      3. </Button>
      4. <Button x:Name="maximizeRestoreButton" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="35, 10" Padding="3" BorderBrush="{x:Null}" ToolTip="Do not use. It may explode!"
      5. IsEnabled="False" Background="Transparent" >
      6. <TextBlock FontFamily="Marlett" FontSize="15" Text="1" />
      7. </Button>
      8. <Button x:Name="minimizeButton" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="60, 10" Padding="3" BorderBrush="{x:Null}" Background="Transparent" >
      9. <TextBlock FontFamily="Marlett" FontSize="15" Text="0" />
      10. </Button>

      C#-Quellcode

      1. ​maximizeRestoreButton.Click += (s, evt) => {
      2. if (WindowState == WindowState.Normal) {
      3. MaximizeWindow();
      4. ((TextBlock)maximizeRestoreButton.Content).Text = "2";
      5. } else {
      6. Restore();
      7. ((TextBlock)maximizeRestoreButton.Content).Text = "1";
      8. }
      9. };


      Ich hoffe, dass euch dieser Beitrag geholfen hat, und dass ihn jemand gut anwenden kann!

      Vielen Dank für anschauen.
      "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
      "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln