WPF - создание кнопок со стрелками вверх и вниз с помощью стандартных кнопок

Я хочу создать несколько кнопок вверх и вниз, используя стандартный фон кнопки, но с черными стрелками.

Как лучше всего добиться этого с помощью WPF?

Малькольм


person Malcolm    schedule 11.01.2009    source источник


Ответы (5)


Я считаю, что Marlett (шрифт, встроенный в Windows) подходит для подобных задач.

<Button FontFamily="Marlett" FontSize="20" Content="5"/>
<Button FontFamily="Marlett" FontSize="20" Content="6"/>

Вывод:

введите описание изображения здесь

person Matt Hamilton    schedule 11.01.2009
comment
Ух ты. Я знаю, что это не такой WPF-y, как рисование треугольного многоугольника вручную, но все же ... не ожидал голосов против. - person Matt Hamilton; 11.01.2009
comment
Я считаю, что это нормальный вариант, какие еще интересные символы есть в шрифте? - person Ian Oakes; 11.01.2009
comment
Нажмите Пуск | Выполнить и введите charmap - затем вы можете переключиться на Marlett и посмотреть. Я считаю, что это шрифт, который изначально использовался Windows 95 для визуализации всех глифов кнопок пользовательского интерфейса. - person Matt Hamilton; 11.01.2009
comment
+1 Исправил мою проблему. Намного приятнее, чем каждый раз рисовать треугольник. Очень полезно знать. Спасибо! - person Joey; 11.10.2011
comment
В Silverlight для этого будет использоваться шрифт Webdings. - person Doguhan Uluca; 24.10.2011
comment
Согласно ответу Тарана, теперь это может быть устаревший шрифт, по крайней мере, он доступен во всех версиях Windows, начиная с 7 и выше. - person Dabblernl; 14.08.2016
comment
@Dabblernl Я запускал это в окне Windows XP, и он тоже работал нормально. - person user4574; 14.02.2017
comment
@ Мэтт Гамильтон, что там будет для стрелок влево и вправо? - person CodeDada; 21.11.2017
comment
Удивительный! Было бы неплохо, если бы вы могли расширить ответ, включив в него некоторые основные значки, такие как стрелка вверх, стрелка вниз, плюс минус и т. Д. - person Shimmy Weitzhandler; 22.11.2017
comment
@shimmy Запустите charmap.exe, переключитесь на шрифт Marlett и скопируйте / вставьте так, как вам нравится. Здесь не так много символов, но они полезны. - person Matt Hamilton; 22.11.2017
comment
@MattHamilton Да, я только что это сделал. Похоже, шрифт Marlett довольно ограничен. В любом случае это еще хорошо! Спасибо за ваш быстрый ответ! - person Shimmy Weitzhandler; 22.11.2017
comment
Использование шрифта, который, как вы не можете гарантировать, будет представлен в будущих версиях ОС, кажется не очень хорошим решением. - person BartoszKP; 09.08.2018

Никакое обсуждение этого вопроса не будет полным без упоминания мини-языка геометрии (или Path Markup Синтаксис) для более компактного определения формы: -

  <Button>
    <Path Fill="Black" Data="M 0 6 L 12 6 L 6 0 Z"/>
  </Button>
  <Button>
    <Path Fill="Black" Data="M 0 0 L 6 6 L 12 0 Z"/>
  </Button>

Первый описывает перемещение к 0,6 линии на 12,6 линии на 6,0, а затем закрытие фигуры (Z).

Также есть кривой синтаксис.

person Rhys    schedule 11.01.2009
comment
Стрелки влево и вправо соответственно: Данные = M -2 6 L 4 12 L 4 0 Z Данные = M 2 12 L 9 6 L 2 0 Z - person Tim; 03.09.2016
comment
@Tim Они не симметричны: / - person BartoszKP; 09.08.2018
comment
Спасибо за объяснение :) наконец-то знаю, что означают эти символы L, M, Z !! - person mrid; 22.04.2019

Предпочтительный способ сделать это сейчас - использовать символ пользовательского интерфейса Segoe. Он заменяет Марлетта и предоставляет множество полезных глифов. Вверх и вниз было бы

<Button FontFamily="Segoe UI Symbol" Content="&#xE1FD;"/>    
<Button FontFamily="Segoe UI Symbol" Content="&#xE110;"/>

Что отображается как:

введите описание изображения здесь

Этот шрифт предустановлен во всех версиях Windows 7+.

person Taran    schedule 01.03.2015
comment
Этот шрифт был заменен на Segoe MDL2 Assets для Windows 10. Ссылка, предоставленная для Segoe UI Symbol, теперь ведет туда. Обратите внимание, что символ пользовательского интерфейса Segoe отсутствует в Windows 10, а активы Segoe MDL2 отсутствуют в Windows 8.1. - person Dabblernl; 14.08.2016
comment
За этот ответ следует проголосовать больше для наглядности, поскольку в настоящее время это наиболее распространенный метод. - person Christian Ivicevic; 24.09.2017

Вы можете создать Polygon, который представляет ваши треугольники вверх и вниз, а затем установить их как содержимое кнопок:

<Button>
  <Polygon 
    Points="300,200 450,200 375,300 300,200"
    Stroke="Black">
    <Polygon.Fill>
      <SolidColorBrush Color="Black" />
    </Polygon.Fill>
  </Polygon>
</Button>

Вы можете настроить их, чтобы рисовать разные фигуры, но обычно это XAML, который вы использовали бы для базовой геометрии.

person casperOne    schedule 11.01.2009

Если вы хотите иметь стрелку с базовым прямоугольником, вы можете использовать этот образец ...

<Button >
   <Polygon   Stretch="Fill"  Fill="Black" Points="0,0 0,30 0,10 30,10 30,-10 45,10 30,30 30,20 0,20 0,0 30,0 30,10 0,10" />
</Button>
person Pinga    schedule 04.11.2012