#0042 界面优化布局,包括icon的设计

This commit is contained in:
zhengxuan.zhang
2026-03-20 14:26:01 +08:00
parent 2bd21f9eb4
commit 2c8d9df19c
4 changed files with 295 additions and 211 deletions
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Prism.Mvvm;
@@ -12,31 +13,58 @@ namespace XplorePlane.ViewModels
public string DisplayName { get; }
public string IconPath { get; }
public string Category { get; }
public string CategoryIcon { get; }
public OperatorDescriptor(string key, string displayName, string iconPath = "", string category = "通用")
public OperatorDescriptor(string key, string displayName, string iconPath = "", string category = "通用", string categoryIcon = "⚙")
{
Key = key;
DisplayName = displayName;
IconPath = iconPath;
Category = category;
CategoryIcon = categoryIcon;
}
}
public class OperatorGroupViewModel
{
public string CategoryName { get; set; }
public string CategoryIcon { get; set; }
public ObservableCollection<OperatorDescriptor> Operators { get; set; } = new();
}
public class OperatorToolboxViewModel : BindableBase
{
private readonly IImageProcessingService _imageProcessingService;
private string _searchText = string.Empty;
// 算子 Key -> (分类名, 分类图标, 算子图标) 映射
private static readonly Dictionary<string, (string Category, string CatIcon, string OpIcon)> CategoryMap = new()
{
["GaussianBlur"] = ("滤波与平滑", "🔵", "🌀"),
["GaussianBlur16"] = ("滤波与平滑", "🔵", "🌀"),
["BandPassFilter"] = ("滤波与平滑", "🔵", "📶"),
["ShockFilter"] = ("滤波与平滑", "🔵", "⚡"),
["Contrast"] = ("增强与校正", "🟡", "🔆"),
["Gamma"] = ("增强与校正", "🟡", "🌗"),
["FlatFieldCorrection16"] = ("增强与校正", "🟡", "📐"),
["Threshold"] = ("分割与阈值", "🟢", "📊"),
["Division"] = ("分割与阈值", "🟢", "➗"),
["Morphology"] = ("形态学与轮廓", "🔴", "🔲"),
["Contour"] = ("形态学与轮廓", "🔴", "✏️"),
};
public OperatorToolboxViewModel(IImageProcessingService imageProcessingService)
{
_imageProcessingService = imageProcessingService ?? throw new ArgumentNullException(nameof(imageProcessingService));
AvailableOperators = new ObservableCollection<OperatorDescriptor>();
FilteredOperators = new ObservableCollection<OperatorDescriptor>();
FilteredGroups = new ObservableCollection<OperatorGroupViewModel>();
LoadOperators();
}
public ObservableCollection<OperatorDescriptor> AvailableOperators { get; }
public ObservableCollection<OperatorDescriptor> FilteredOperators { get; }
public ObservableCollection<OperatorGroupViewModel> FilteredGroups { get; }
public string SearchText
{
@@ -54,7 +82,10 @@ namespace XplorePlane.ViewModels
foreach (var key in _imageProcessingService.GetAvailableProcessors())
{
var displayName = _imageProcessingService.GetProcessorDisplayName(key);
AvailableOperators.Add(new OperatorDescriptor(key, displayName ?? key));
var (category, catIcon, opIcon) = CategoryMap.TryGetValue(key, out var info)
? info
: ("其他", "⚙", "⚙");
AvailableOperators.Add(new OperatorDescriptor(key, displayName ?? key, opIcon, category, catIcon));
}
ApplyFilter();
}
@@ -62,12 +93,39 @@ namespace XplorePlane.ViewModels
private void ApplyFilter()
{
FilteredOperators.Clear();
FilteredGroups.Clear();
var filtered = string.IsNullOrWhiteSpace(SearchText)
? AvailableOperators
: AvailableOperators.Where(o =>
o.DisplayName.Contains(SearchText, StringComparison.OrdinalIgnoreCase));
o.DisplayName.Contains(SearchText, StringComparison.OrdinalIgnoreCase) ||
o.Category.Contains(SearchText, StringComparison.OrdinalIgnoreCase));
foreach (var op in filtered)
FilteredOperators.Add(op);
var groups = filtered
.GroupBy(o => o.Category)
.OrderBy(g => GetCategoryOrder(g.Key));
foreach (var group in groups)
{
FilteredGroups.Add(new OperatorGroupViewModel
{
CategoryName = group.Key,
CategoryIcon = group.First().CategoryIcon,
Operators = new ObservableCollection<OperatorDescriptor>(group)
});
}
}
private static int GetCategoryOrder(string category) => category switch
{
"滤波与平滑" => 0,
"增强与校正" => 1,
"分割与阈值" => 2,
"形态学与轮廓" => 3,
_ => 99
};
}
}
@@ -7,11 +7,13 @@
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="200">
d:DesignHeight="600" d:DesignWidth="280">
<UserControl.Resources>
<SolidColorBrush x:Key="PanelBg" Color="White"/>
<SolidColorBrush x:Key="PanelBorder" Color="#cdcbcb"/>
<SolidColorBrush x:Key="CategoryBg" Color="#F5F7FA"/>
<SolidColorBrush x:Key="HoverBg" Color="#E8F0FE"/>
<FontFamily x:Key="CsdFont">Microsoft YaHei UI</FontFamily>
</UserControl.Resources>
@@ -26,18 +28,18 @@
</Grid.RowDefinitions>
<!-- 标题 -->
<Border Grid.Row="0" Background="#F0F0F0" BorderBrush="{StaticResource PanelBorder}"
BorderThickness="0,0,0,1" Padding="8,6">
<TextBlock Text="算子工具箱" FontFamily="{StaticResource CsdFont}"
FontWeight="Bold" FontSize="12" Foreground="#1c1c1b"/>
<Border Grid.Row="0" Background="#0060A0" Padding="10,8">
<TextBlock Text="🧰 算子工具箱" FontFamily="{StaticResource CsdFont}"
FontWeight="Bold" FontSize="13" Foreground="White"/>
</Border>
<!-- 搜索框 -->
<Border Grid.Row="1" Padding="6,4" BorderBrush="{StaticResource PanelBorder}"
<Border Grid.Row="1" Padding="8,6" BorderBrush="{StaticResource PanelBorder}"
BorderThickness="0,0,0,1">
<TextBox Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}"
FontFamily="{StaticResource CsdFont}" FontSize="11"
Padding="4,2" BorderBrush="#cdcbcb" BorderThickness="1">
Padding="6,4" BorderBrush="#cdcbcb" BorderThickness="1"
ToolTip="输入关键字搜索算子">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
@@ -46,7 +48,7 @@
<Setter.Value>
<VisualBrush AlignmentX="Left" AlignmentY="Center" Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="搜索算子..." Foreground="#aaa"
<TextBlock Text="🔍 搜索算子..." Foreground="#aaa"
FontFamily="Microsoft YaHei UI" FontSize="11"
Margin="4,0,0,0"/>
</VisualBrush.Visual>
@@ -60,27 +62,72 @@
</TextBox>
</Border>
<!-- 算子列表(拖拽源) -->
<telerik:RadListBox Grid.Row="2"
x:Name="ToolboxListBox"
ItemsSource="{Binding FilteredOperators}"
BorderThickness="0"
Background="Transparent">
<telerik:RadListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="4,3">
<Border Width="24" Height="24" Background="#E8F0FE"
CornerRadius="3" Margin="0,0,6,0">
<TextBlock Text="⚙" HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="12"/>
</Border>
<TextBlock Text="{Binding DisplayName}"
FontFamily="Microsoft YaHei UI" FontSize="11"
VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</telerik:RadListBox.ItemTemplate>
</telerik:RadListBox>
<!-- 分组算子列表 -->
<ScrollViewer x:Name="ToolboxListBox" Grid.Row="2" VerticalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding FilteredGroups}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,2">
<!-- 分类标题 -->
<Border Background="{StaticResource CategoryBg}"
BorderBrush="{StaticResource PanelBorder}"
BorderThickness="0,0,0,1"
Padding="10,6">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CategoryIcon}" FontSize="13"
VerticalAlignment="Center" Margin="0,0,6,0"/>
<TextBlock Text="{Binding CategoryName}"
FontFamily="Microsoft YaHei UI"
FontWeight="SemiBold" FontSize="12"
Foreground="#333" VerticalAlignment="Center"/>
</StackPanel>
</Border>
<!-- 分类下的算子 -->
<ItemsControl ItemsSource="{Binding Operators}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Padding="12,5,8,5" Cursor="Hand"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0,0,0,1">
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#E8F0FE"/>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel Orientation="Horizontal">
<Border Width="26" Height="26"
Background="#EEF2FF"
CornerRadius="4" Margin="0,0,8,0">
<TextBlock Text="{Binding IconPath}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="14"/>
</Border>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="{Binding DisplayName}"
FontFamily="Microsoft YaHei UI"
FontSize="11.5"
Foreground="#1c1c1b"/>
<TextBlock Text="{Binding Key}"
FontFamily="Consolas"
FontSize="9.5"
Foreground="#999"/>
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
</Border>
</UserControl>
+157 -178
View File
@@ -10,10 +10,11 @@
xmlns:views="clr-namespace:XplorePlane.Views"
x:Name="ParentWindow"
Title="XplorePlane"
Width="1280"
Height="1000"
d:DesignWidth="1280"
Width="1920"
Height="1040"
d:DesignWidth="1580"
Background="#F5F5F5"
Icon="pack://application:,,,/GapInspect.ico"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
<Window.Resources>
@@ -28,7 +29,6 @@
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="28*" />
<ColumnDefinition Width="1157*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
@@ -39,11 +39,11 @@
<telerik:RadRibbonView
x:Name="ribbonView"
Title="XplorePlane"
Title=""
Grid.ColumnSpan="3"
VerticalAlignment="Center"
ApplicationButtonVisibility="Collapsed"
ApplicationName=""
ApplicationName="XplorePlane"
BackstageClippingElement="{Binding ElementName=LayoutRoot}"
HeaderBackground="LightGray">
@@ -51,7 +51,10 @@
<spreadsheet:FunctionsProvider x:Key="FunctionsProvider" />
</telerik:RadRibbonView.Resources>
<telerik:RadRibbonTab Header="主页">
<telerik:RadRibbonTab
Width="53"
HorizontalAlignment="Left"
Header="主页">
<telerik:RadRibbonGroup
telerik:ScreenTip.Title="Clipboard"
Header="文件"
@@ -61,27 +64,28 @@
</telerik:RadRibbonGroup.Variants>
<!-- 实时控制: Live / Snap / 加载 / 保存 -->
<telerik:RadRibbonButton
telerik:ScreenTip.Description="激活X射线实时模式"
telerik:ScreenTip.Title="实时模式"
Size="Large"
Text="实时" />
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="加载图像"
telerik:ScreenTip.Title="加载CNC"
Command="{Binding OpenFileCommand}"
Size="Medium"
Text="📂 加载" />
Text="📂 加载CNC" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="保存当前X射线实时图像"
telerik:ScreenTip.Title="保存图像"
Size="Medium"
Text="💾 保存" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="另存为"
Command="{Binding OpenFileCommand}"
Size="Medium"
Text="📂 另存为" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Width="180" Header="程序">
<telerik:RadRibbonGroup Width="160" Header="程序">
<!-- 安全门控 & 系统 -->
@@ -95,8 +99,6 @@
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="停止"
telerik:ScreenTip.Title="停止"
@@ -116,60 +118,46 @@
SmallImage="/Assets/Icons/closedoor.png"
Text="关门" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Width="130" Header="快捷工具">
<telerik:RadRibbonGroup Header="快捷工具">
<!-- 快捷工具 (Small按钮组) -->
<telerik:RadButtonGroup>
<!-- 快捷工具: 上下两列,带文字 -->
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="中心十字线"
Size="Small"
Size="Medium"
SmallImage="/Assets/Icons/crosshair.png"
Text="中心十字线" />
Text="十字线" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="白背景检测黑区域"
Size="Medium"
SmallImage="/Assets/Icons/film-darken.png"
Text="白底检测" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="行灰度分布"
Size="Small"
Size="Medium"
SmallImage="/Assets/Icons/film-darken.png"
Text="灰度" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="黑背景检测白区域"
Size="Medium"
SmallImage="/Assets/Icons/film-darken.png"
Text="黑底检测" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="锐化"
Size="Small"
Size="Medium"
SmallImage="/Assets/Icons/sharpen.png"
Text="锐化" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="增强"
Size="Small"
Size="Medium"
SmallImage="/Assets/Icons/dynamic-range.png"
Text="增强" />
</telerik:RadButtonGroup>
<telerik:RadButtonGroup>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="白背景检测黑区域"
Size="Small"
SmallImage="/Assets/Icons/film-darken.png"
Text="◻" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="黑背景检测白区域"
Size="Small"
SmallImage="/Assets/Icons/film-darken.png"
Text="◼" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="缩小"
Size="Small"
SmallImage="/Assets/Icons/film-darken.png"
Text="Out" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="放大"
Size="Small"
SmallImage="/Assets/Icons/film-darken.png"
Text="In" />
</telerik:RadButtonGroup>
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup
@@ -188,15 +176,11 @@
<spreadsheetControls:RadVerticalAlignmentToBooleanConverter x:Key="verticalAlignmentToBooleanConverter" />
</telerik:RadRibbonGroup.Resources>
<telerik:RadOrderedWrapPanel />
<telerik:RadOrderedWrapPanel>
<telerik:RadOrderedWrapPanel.Resources>
<telerik:InvertedBooleanConverter x:Key="InvertedBooleanConverter" />
</telerik:RadOrderedWrapPanel.Resources>
<!-- 第一列: 暖机 + 轴复位 上下排列 -->
<StackPanel>
<telerik:RadRibbonToggleButton
telerik:ScreenTip.Description="Make all content visible within a cell by displaying it on multiple lines."
telerik:ScreenTip.Title="Wrap Text"
telerik:ScreenTip.Description="暖机"
telerik:ScreenTip.Title="暖机"
Command="{Binding Path=SetIsWrapped.Command}"
CommandParameter="{Binding Path=SetIsWrapped.SelectedValue}"
IsChecked="{Binding Path=SetIsWrapped.SelectedValue, Mode=TwoWay}"
@@ -204,24 +188,27 @@
Size="Medium"
SmallImage="/Assets/Icons/heat-engine.png"
Text="暖机" />
<telerik:RadRibbonToggleButton
x:Name="MergeAndCenterButton"
telerik:ScreenTip.Description="Joins the selected cells into one larger cell and centers the contents in the new cell.&#10; This is often used to create labels that span multiple columns."
telerik:ScreenTip.Title="Merge &amp; Center"
telerik:ScreenTip.Description="轴复位"
telerik:ScreenTip.Title="轴复位"
Command="{Binding Path=MergeAndCenter.Command}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue, Converter={StaticResource InvertedBooleanConverter}}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue}"
IsChecked="{Binding Path=MergeAndCenter.SelectedValue, Mode=TwoWay}"
IsEnabled="{Binding Path=MergeAndCenter.IsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/home.png"
Text="轴复位" />
</StackPanel>
<!-- 第二列: 射线源 + 探测器 + 运动控制 -->
<StackPanel>
<telerik:RadRibbonToggleButton
x:Name="MergeAndCenterButton1"
telerik:ScreenTip.Description="Joins the selected cells into one larger cell and centers the contents in the new cell.&#10; This is often used to create labels that span multiple columns."
telerik:ScreenTip.Title="Merge &amp; Center"
telerik:ScreenTip.Description="射线源控制"
telerik:ScreenTip.Title="射线源"
Command="{Binding Path=MergeAndCenter.Command}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue, Converter={StaticResource InvertedBooleanConverter}}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue}"
IsChecked="{Binding Path=MergeAndCenter.SelectedValue, Mode=TwoWay}"
IsEnabled="{Binding Path=MergeAndCenter.IsEnabled}"
Size="Medium"
@@ -229,136 +216,114 @@
Text="射线源" />
<telerik:RadRibbonToggleButton
x:Name="MergeAndCenterButton2"
telerik:ScreenTip.Description="Joins the selected cells into one larger cell and centers the contents in the new cell.&#10; This is often used to create labels that span multiple columns."
telerik:ScreenTip.Title="Merge &amp; Center"
telerik:ScreenTip.Description="探测器控制"
telerik:ScreenTip.Title="探测器"
Command="{Binding Path=MergeAndCenter.Command}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue, Converter={StaticResource InvertedBooleanConverter}}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue}"
IsChecked="{Binding Path=MergeAndCenter.SelectedValue, Mode=TwoWay}"
IsEnabled="{Binding Path=MergeAndCenter.IsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/detector.png"
SmallImage="/Assets/Icons/detector2.png"
Text="探测器" />
<telerik:RadRibbonToggleButton
x:Name="MergeAndCenterButton3"
telerik:ScreenTip.Description="Joins the selected cells into one larger cell and centers the contents in the new cell.&#10; This is often used to create labels that span multiple columns."
telerik:ScreenTip.Title="Merge &amp; Center"
telerik:ScreenTip.Description="运动控制"
telerik:ScreenTip.Title="运动控制"
Command="{Binding Path=MergeAndCenter.Command}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue, Converter={StaticResource InvertedBooleanConverter}}"
CommandParameter="{Binding Path=MergeAndCenter.SelectedValue}"
IsChecked="{Binding Path=MergeAndCenter.SelectedValue, Mode=TwoWay}"
IsEnabled="{Binding Path=MergeAndCenter.IsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/xyz.png"
Text="运动控制" />
</telerik:RadOrderedWrapPanel>
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup telerik:ScreenTip.Title="图像算子" Header="图像算子">
<telerik:RadRibbonDropDownButton
telerik:ScreenTip.Description="打开算子工具箱,拖拽算子到流水线中"
telerik:ScreenTip.Title="算子工具箱"
LargeImage="/Assets/Icons/dynamic-range.png"
Size="Large"
Text="算子工具箱">
<telerik:RadRibbonDropDownButton.DropDownContent>
<views:OperatorToolboxView Width="220" Height="400" />
<views:OperatorToolboxView Width="280" Height="480" />
</telerik:RadRibbonDropDownButton.DropDownContent>
</telerik:RadRibbonDropDownButton>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup
telerik:ScreenTip.Description="Show the Number tab of the Format Cells dialog box."
telerik:ScreenTip.Title="Format Cells: Number"
DialogLauncherCommand="{Binding Path=ShowFormatCellsDialog.Command}"
DialogLauncherCommandParameter="Number"
DialogLauncherVisibility="{Binding Path=ShowFormatCellsDialog.IsEnabled, Converter={StaticResource BoolToVisibilityValueConverter}}"
Header="CNC"
IsEnabled="{Binding Path=NumberGroup.IsEnabled}">
<telerik:RadRibbonGroup Header="CNC">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadOrderedWrapPanel>
<spreadsheetControls:NumberFormatAutoCompleteComboBox
telerik:ScreenTip.Description="Choose how the values in a cell are displayed: as a percentage, as currency, as a date or time, etc."
telerik:ScreenTip.Title="Number Format"
CellValueFormat="{Binding ElementName=radSpreadsheet, Path=CommandDescriptors.SetFormat.SelectedValue, Mode=TwoWay}"
IsEnabled="{Binding ElementName=radSpreadsheet, Path=CommandDescriptors.SetFormat.IsEnabled, Mode=TwoWay}"
RadSpreadsheet="{Binding ElementName=radSpreadsheet, Mode=OneTime}" />
<telerik:RadButtonGroup Margin="0,0,3,0">
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/new-doc.png"
Text="新建CNC" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/reference.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/save.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/saveall.png"
Text="参考点" />
</telerik:RadButtonGroup>
<telerik:RadButtonGroup Margin="0,0,3,0">
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/add-pos.png"
Text="新建CNC" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/Module.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/mark.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/message.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/wait.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Display the value of the cell as a percentage."
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Small"
SmallImage="/Assets/Icons/finish.png"
Text="参考点" />
</telerik:RadButtonGroup>
</telerik:RadOrderedWrapPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="新建CNC"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/new-doc.png"
Text="新建CNC" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="参考点"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/reference.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="保存"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/save.png"
Text="保存" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="全部保存"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/saveall.png"
Text="全部保存" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="添加位置"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/add-pos.png"
Text="添加位置" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="模块"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/Module.png"
Text="模块" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="标记"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/mark.png"
Text="标记" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="消息"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/message.png"
Text="消息" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="等待"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/wait.png"
Text="等待" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="完成"
Command="{Binding Path=SetStyle.Command}"
Size="Medium"
SmallImage="/Assets/Icons/finish.png"
Text="完成" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="高级模块" IsEnabled="{Binding Path=CellsGroup.IsEnabled}">
@@ -402,7 +367,7 @@
Command="{Binding Path=ShowHyperlinkDialog.Command}"
Content="螺旋扫描"
IsEnabled="{Binding Path=ShowHyperlinkDialog.IsEnabled}"
LargeImage="/Assets/Icons/quick-scan.png"
LargeImage="/Assets/Icons/spiral.png"
Size="Large" />
</telerik:RadRibbonGroup>
@@ -423,9 +388,26 @@
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
<telerik:RadRibbonTab Header="关于">
<telerik:RadRibbonGroup Header="关于">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
LargeImage="/Assets/Icons/tools.png"
Size="Large"
Text="关于 XplorePlane" />
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="帮助">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
LargeImage="/Assets/Icons/message.png"
Size="Large"
Text="帮助文档" />
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
<telerik:RadRibbonView.ContextualGroups>
<telerik:RadRibbonContextualGroup
@@ -473,7 +455,6 @@
<Grid Grid.Column="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
@@ -523,8 +504,6 @@
FontSize="11"
Foreground="White"
Text="x: 0 y: 0 RGB: 0 0 0" />
</Grid>
</Border>
</Grid>
+1 -1
View File
@@ -187,7 +187,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>Libs\ImageProcessing\zh-CN\%(Filename)%(Extension)</Link>
</None>
<Content Include="GapInspect.ico" />
<Resource Include="GapInspect.ico" />
<!-- 配置文件 -->
<None Update="App.config">