feat(设置): 新增墨迹纠正设置页面并重构设置界面
重构设置界面,将墨迹纠正相关功能从画板设置中分离出来,新增独立的墨迹纠正设置页面。主要变更包括: - 新增 InkRecognitionPage 用于集中管理墨迹纠正功能 - 调整设置窗口导航结构,将墨迹纠正设为画板设置的子页面 - 优化设置项布局,使用折叠面板组织复杂选项 - 移除主窗口中冗余的崩溃处理和手势设置 - 修复多指手势时橡皮擦状态保存问题 - 新增笔尖模式相关字符串资源
This commit is contained in:
@@ -140,20 +140,25 @@
|
||||
SwitchName="ToggleSwitchEnableInkFade"
|
||||
Toggled="ToggleSwitchEnableInkFade_Toggled" />
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=Canvas_InkFadeTime}"
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=Canvas_EnableInkFade}"
|
||||
Visibility="{Binding IsOn, ElementName=CardEnableInkFade, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardEnableInkFade, Mode=OneWay}"
|
||||
d:Visibility="Visible">
|
||||
<ui:SettingsCard.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Stopwatch}" />
|
||||
</ui:SettingsCard.HeaderIcon>
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="InkFadeTimeSlider" Width="150" Minimum="1000" Maximum="10000"
|
||||
Value="3000" TickFrequency="1000" IsSnapToTickEnabled="True"
|
||||
ValueChanged="InkFadeTimeSlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=InkFadeTimeSlider, StringFormat={}{0:0}ms}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Settings}" />
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=Canvas_InkFadeTime}">
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="InkFadeTimeSlider" Width="150" Minimum="1000" Maximum="10000"
|
||||
Value="3000" TickFrequency="1000" IsSnapToTickEnabled="True"
|
||||
ValueChanged="InkFadeTimeSlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=InkFadeTimeSlider, StringFormat={}{0:0}ms}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardHideInkFadeControlInPenMenu"
|
||||
Header="{i18n:I18n Key=Canvas_HideInkFadeInPenMenu}"
|
||||
@@ -223,144 +228,69 @@
|
||||
SwitchName="ToggleSwitchEnableEraserAutoSwitchBack"
|
||||
Toggled="ToggleSwitchEnableEraserAutoSwitchBack_Toggled" />
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=Canvas_SwitchBackDelay}"
|
||||
Description="{i18n:I18n Key=Canvas_SwitchBackDelayHint}"
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=Canvas_SwitchBackAfterEraser}"
|
||||
Visibility="{Binding IsOn, ElementName=CardEnableEraserAutoSwitchBack, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
d:Visibility="Visible">
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="EraserAutoSwitchBackDelaySlider" Width="150" Minimum="1" Maximum="60"
|
||||
Value="10" TickFrequency="1" IsSnapToTickEnabled="True"
|
||||
ValueChanged="EraserAutoSwitchBackDelaySlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=EraserAutoSwitchBackDelaySlider, StringFormat={}{0:0}秒}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
||||
Text="{i18n:I18n Key=InkRecog_Title}" />
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableInkToShape"
|
||||
Header="{i18n:I18n Key=InkRecog_EnableInkRecognition}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Draw}"
|
||||
SwitchName="ToggleSwitchEnableInkToShape"
|
||||
Toggled="ToggleSwitchEnableInkToShape_Toggled" />
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_ShapeEngine}"
|
||||
Description="{i18n:I18n Key=InkRecog_ShapeEngineHint}">
|
||||
<ComboBox x:Name="ComboBoxShapeRecognitionEngine"
|
||||
SelectionChanged="ComboBoxShapeRecognitionEngine_SelectionChanged">
|
||||
<ComboBoxItem Content="{i18n:I18n Key=InkRecog_ShapeEngineAuto}" />
|
||||
<ComboBoxItem Content="{i18n:I18n Key=InkRecog_ShapeEngineIACore}" />
|
||||
<ComboBoxItem Content="{i18n:I18n Key=InkRecog_ShapeEngineWinRT}" />
|
||||
</ComboBox>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableWinRtHandwritingStrokeBeautify"
|
||||
Header="{i18n:I18n Key=InkRecog_HandwritingBeautify}"
|
||||
Description="{i18n:I18n Key=InkRecog_HandwritingBeautifyHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.PenWorkspace}"
|
||||
SwitchName="ToggleSwitchEnableWinRtHandwritingStrokeBeautify"
|
||||
Toggled="ToggleSwitchEnableWinRtHandwritingStrokeBeautify_Toggled" />
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableInkToShapeNoFakePressureRectangle"
|
||||
Header="{i18n:I18n Key=InkRecog_BlockRectFakePressure}"
|
||||
ShowWhen="{Binding IsOn, ElementName=CardEnableInkToShape}"
|
||||
d:Visibility="Visible"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.RectangularClipping}"
|
||||
SwitchName="ToggleSwitchEnableInkToShapeNoFakePressureRectangle"
|
||||
Toggled="ToggleSwitchEnableInkToShapeNoFakePressureRectangle_Toggled" />
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableInkToShapeNoFakePressureTriangle"
|
||||
Header="{i18n:I18n Key=InkRecog_BlockTriFakePressure}"
|
||||
ShowWhen="{Binding IsOn, ElementName=CardEnableInkToShape}"
|
||||
d:Visibility="Visible"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.IncidentTriangle}"
|
||||
SwitchName="ToggleSwitchEnableInkToShapeNoFakePressureTriangle"
|
||||
Toggled="ToggleSwitchEnableInkToShapeNoFakePressureTriangle_Toggled" />
|
||||
|
||||
<ui:SettingsExpander Header="形状修正"
|
||||
Visibility="{Binding IsOn, ElementName=CardEnableInkToShape, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardEnableInkToShape, Mode=OneWay}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardEnableEraserAutoSwitchBack, Mode=OneWay}"
|
||||
d:Visibility="Visible">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Settings}" />
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_FixTriangle}">
|
||||
<CheckBox x:Name="ToggleCheckboxEnableInkToShapeTriangle" IsChecked="True"
|
||||
Checked="ToggleCheckboxEnableInkToShapeTriangle_CheckedChanged"
|
||||
Unchecked="ToggleCheckboxEnableInkToShapeTriangle_CheckedChanged" />
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_FixRectangle}">
|
||||
<CheckBox x:Name="ToggleCheckboxEnableInkToShapeRectangle" IsChecked="True"
|
||||
Checked="ToggleCheckboxEnableInkToShapeRectangle_CheckedChanged"
|
||||
Unchecked="ToggleCheckboxEnableInkToShapeRectangle_CheckedChanged" />
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_FixEllipse}">
|
||||
<CheckBox x:Name="ToggleCheckboxEnableInkToShapeRounded" IsChecked="True"
|
||||
Checked="ToggleCheckboxEnableInkToShapeRounded_CheckedChanged"
|
||||
Unchecked="ToggleCheckboxEnableInkToShapeRounded_CheckedChanged" />
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=Canvas_SwitchBackDelay}"
|
||||
Description="{i18n:I18n Key=Canvas_SwitchBackDelayHint}">
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="EraserAutoSwitchBackDelaySlider" Width="150" Minimum="1" Maximum="60"
|
||||
Value="10" TickFrequency="1" IsSnapToTickEnabled="True"
|
||||
ValueChanged="EraserAutoSwitchBackDelaySlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=EraserAutoSwitchBackDelaySlider, StringFormat={}{0:0}秒}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoStraightenLine"
|
||||
Header="{i18n:I18n Key=InkRecog_AutoStraightLine}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.LineDisplay}"
|
||||
SwitchName="ToggleSwitchAutoStraightenLine"
|
||||
Toggled="ToggleSwitchAutoStraightenLine_Toggled" />
|
||||
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}"
|
||||
Text="{i18n:I18n Key=Gesture_Title}" />
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_LengthThreshold}"
|
||||
Visibility="{Binding IsOn, ElementName=CardAutoStraightenLine, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
<controls:LabeledSettingsCard x:Name="CardAutoSwitchTwoFingerGesture"
|
||||
Header="{i18n:I18n Key=Gesture_AutoToggleTwoFinger}"
|
||||
Description="{i18n:I18n Key=Gesture_AutoToggleHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Switch}"
|
||||
SwitchName="ToggleSwitchAutoSwitchTwoFingerGesture"
|
||||
Toggled="ToggleSwitchAutoSwitchTwoFingerGesture_Toggled" />
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnableTwoFingerRotationOnSelection"
|
||||
Header="{i18n:I18n Key=Gesture_AllowRotateScale}"
|
||||
Description="{i18n:I18n Key=Gesture_AllowRotateScaleHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Rotate}"
|
||||
SwitchName="ToggleSwitchEnableTwoFingerRotationOnSelection"
|
||||
Toggled="ToggleSwitchEnableTwoFingerRotationOnSelection_Toggled" />
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardEnablePalmEraser"
|
||||
Header="{i18n:I18n Key=Gesture_EnablePalmEraser}"
|
||||
Description="{i18n:I18n Key=Gesture_PalmHint}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.EraseTool}"
|
||||
SwitchName="ToggleSwitchEnablePalmEraser"
|
||||
Toggled="ToggleSwitchEnablePalmEraser_Toggled" />
|
||||
|
||||
<ui:SettingsExpander Header="{i18n:I18n Key=Gesture_EnablePalmEraser}"
|
||||
Visibility="{Binding IsOn, ElementName=CardEnablePalmEraser, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
IsExpanded="{Binding IsOn, ElementName=CardEnablePalmEraser, Mode=OneWay}"
|
||||
d:Visibility="Visible">
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="AutoStraightenLineThresholdSlider" Width="150" Minimum="30" Maximum="300"
|
||||
Value="80" TickFrequency="30" IsSnapToTickEnabled="True"
|
||||
ValueChanged="AutoStraightenLineThresholdSlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=AutoStraightenLineThresholdSlider, StringFormat={}{0:0}}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_Sensitivity}"
|
||||
Visibility="{Binding IsOn, ElementName=CardAutoStraightenLine, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
d:Visibility="Visible">
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="LineStraightenSensitivitySlider" Width="150" Minimum="0.05" Maximum="2.0"
|
||||
Value="0.20" TickFrequency="0.05" IsSnapToTickEnabled="True"
|
||||
ValueChanged="LineStraightenSensitivitySlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=LineStraightenSensitivitySlider, StringFormat={}{0:F2}}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardHighPrecisionLineStraighten"
|
||||
Header="{i18n:I18n Key=InkRecog_HighPrecisionStraighten}"
|
||||
Description="{i18n:I18n Key=InkRecog_HighPrecisionHint}"
|
||||
ShowWhen="{Binding IsOn, ElementName=CardAutoStraightenLine}"
|
||||
d:Visibility="Visible"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Bullseye}"
|
||||
SwitchName="ToggleSwitchHighPrecisionLineStraighten"
|
||||
Toggled="ToggleSwitchHighPrecisionLineStraighten_Toggled" />
|
||||
|
||||
<controls:LabeledSettingsCard x:Name="CardLineEndpointSnapping"
|
||||
Header="{i18n:I18n Key=InkRecog_LineEndpointSnapping}"
|
||||
Icon="{x:Static ui:SegoeFluentIcons.Link}"
|
||||
SwitchName="ToggleSwitchLineEndpointSnapping"
|
||||
Toggled="ToggleSwitchLineEndpointSnapping_Toggled" />
|
||||
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=InkRecog_SnappingDistance}"
|
||||
Description="{i18n:I18n Key=InkRecog_LineEndpointSnappingHint}"
|
||||
Visibility="{Binding IsOn, ElementName=CardLineEndpointSnapping, Converter={StaticResource BooleanToVisibilityConverter}}"
|
||||
d:Visibility="Visible">
|
||||
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
|
||||
<Slider x:Name="LineEndpointSnappingThresholdSlider" Width="150" Minimum="5" Maximum="50"
|
||||
Value="15" TickFrequency="5" IsSnapToTickEnabled="True"
|
||||
ValueChanged="LineEndpointSnappingThresholdSlider_ValueChanged" />
|
||||
<TextBlock Text="{Binding Value, ElementName=LineEndpointSnappingThresholdSlider, StringFormat={}{0:0}}"
|
||||
VerticalAlignment="Center" FontSize="14" />
|
||||
</ikw:SimpleStackPanel>
|
||||
</ui:SettingsCard>
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Settings}" />
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="{i18n:I18n Key=Gesture_PalmSensitivity}">
|
||||
<ComboBox x:Name="ComboBoxPalmEraserSensitivity"
|
||||
SelectionChanged="ComboBoxPalmEraserSensitivity_SelectionChanged">
|
||||
<ComboBoxItem Content="{i18n:I18n Key=Gesture_PalmSensitivityLow}" />
|
||||
<ComboBoxItem Content="{i18n:I18n Key=Gesture_PalmSensitivityMedium}" />
|
||||
<ComboBoxItem Content="{i18n:I18n Key=Gesture_PalmSensitivityHigh}" />
|
||||
</ComboBox>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<Rectangle Height="48" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user