2014-05-05 6 views
1

Я создаю приложение WPF и создаю пользовательский интерфейс без стандартного заголовка. С учетом сказанного мне нужно обработать мои собственные кнопки WindowState, и я думал, что использование metroUI/Vs2012 будет идеальным. Проблема, с которой я сталкиваюсь, - найти глифы (значки), чтобы я мог добавить их в кнопки. Я проверил vs2012 с помощью snoop и не смог найти много, за исключением того факта, что он использует символы шрифта, а не изображения для значков. Я проверил Segoe UI и, похоже, не содержит их. Что именно люди используют для создания своих значков кнопок на панели метро?Metro UI Titlebar WindowState (Min/Restore/Close) Glyphs

Худший сценарий сценария Я открою приложение метро и возьму некоторые крышки экрана, а затем вернусь к глифам в иллюстраторе, а затем импортирую векторы в смесь для преобразования в XAML. Или я мог бы просто просто вырезать значки только и использовать изображения в кнопках, хотя я бы предпочел использовать глиф или xaml-решение.

Может ли кто-нибудь, кто это сделал, направить меня в правильном направлении?

ответ

2

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

https://mui.codeplex.com/SourceControl/latest#1.0/FirstFloor.ModernUI/FirstFloor.ModernUI.WPF4/Themes/ModernDialog.xaml

<Style x:Key="SystemButtonBase" TargetType="ButtonBase"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="BorderThickness" Value="0"/> 
     <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     <Setter Property="VerticalContentAlignment" Value="Center"/> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ButtonBase}"> 
        <Border Name="Chrome" 
          Background="{TemplateBinding Background}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          SnapsToDevicePixels="true"> 
         <ContentPresenter Margin="{TemplateBinding Padding}" 
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
              RecognizesAccessKey="True" 
              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style x:Key="SystemButton" TargetType="ButtonBase" BasedOn="{StaticResource SystemButtonBase}"> 
     <Setter Property="Foreground" Value="{DynamicResource LinkButtonText}"/> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Foreground" Value="{DynamicResource LinkButtonTextHover}"/> 
      </Trigger> 
      <Trigger Property="IsPressed" Value="True"> 
       <Setter Property="Foreground" Value="{DynamicResource LinkButtonTextPressed}" /> 
      </Trigger> 
      <Trigger Property="IsEnabled" Value="false"> 
       <Setter Property="Foreground" Value="{DynamicResource LinkButtonTextDisabled}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,8,6,0" WindowChrome.IsHitTestVisibleInChrome="True"> 
    <Button Command="{Binding Source={x:Static SystemCommands.MinimizeWindowCommand}}" Style="{StaticResource SystemButton}"> 
     <Button.Content> 
      <Grid Width="13" Height="12" RenderTransform="1,0,0,1,0,1"> 
       <Path Data="M0,6 L8,6 Z" Width="8" Height="7" VerticalAlignment="Center" HorizontalAlignment="Center" 
                  Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="2" /> 
      </Grid> 
     </Button.Content> 
    </Button> 
    <Grid Margin="1,0,1,0"> 
     <Button x:Name="Restore" Command="{Binding Source={x:Static SystemCommands.RestoreWindowCommand}}" Visibility="Collapsed" Style="{StaticResource SystemButton}" > 
      <Button.Content> 
       <Grid Width="13" Height="12" UseLayoutRounding="True" RenderTransform="1,0,0,1,.5,.5"> 
        <Path Data="M2,0 L8,0 L8,6 M0,3 L6,3 M0,2 L6,2 L6,8 L0,8 Z" Width="8" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center" 
                   Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="1" /> 
       </Grid> 
      </Button.Content> 
     </Button> 
     <Button x:Name="Maximize" Command="{Binding Source={x:Static SystemCommands.MaximizeWindowCommand}}" Style="{StaticResource SystemButton}" > 
      <Button.Content> 
       <Grid Width="13" Height="12"> 
        <Path Data="M0,1 L9,1 L9,8 L0,8 Z" Width="9" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center" 
                   Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="2" /> 
       </Grid> 
      </Button.Content> 
     </Button> 
    </Grid> 
    <Button Command="{Binding Source={x:Static SystemCommands.CloseWindowCommand}}" Style="{StaticResource SystemButton}" > 
     <Button.Content> 
      <Grid Width="13" Height="12" RenderTransform="1,0,0,1,0,1"> 
       <Path Data="M0,0 L8,7 M8,0 L0,7 Z" Width="8" Height="7" VerticalAlignment="Center" HorizontalAlignment="Center" 
                  Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="1.5" /> 
      </Grid> 
     </Button.Content> 
    </Button> 
</StackPanel> 

example of what it looks like

+0

Это идеально, именно то, что я искал. Кроме того, вы помните, какой шрифт вы используете? – user1632018

+0

marlett - это тип шрифта http://www.reactos.org/wiki/Marlett_Characters – mhoward

 Смежные вопросы

  • Нет связанных вопросов^_^