[update] 跟随ica更新旧版手势橡皮

This commit is contained in:
Dubi906w 2024-08-15 20:03:07 +08:00
parent 22efc05e86
commit 54a5c5de72
5 changed files with 1246 additions and 1150 deletions

View File

@ -41,8 +41,8 @@
<Window.Resources> <Window.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MainWindow_cs/MW_ContextMenus.xaml"/> <ResourceDictionary Source="MainWindow_cs/MW_ContextMenus.xaml" />
<ResourceDictionary Source="MainWindow_cs/MW_Eraser.xaml"/> <ResourceDictionary Source="MainWindow_cs/MW_Eraser.xaml" />
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
<c:IsEnabledToOpacityConverter x:Key="IsEnabledToOpacityConverter" /> <c:IsEnabledToOpacityConverter x:Key="IsEnabledToOpacityConverter" />
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
@ -131,7 +131,7 @@
</Popup> </Popup>
<!--// 黑/白 板幕布 //--> <!--// 黑/白 板幕布 //-->
<Image Name="FreezeFrameBackgroundImage" Visibility="Collapsed"/> <Image Name="FreezeFrameBackgroundImage" Visibility="Collapsed" />
<Grid Name="GridBackgroundCoverHolder"> <Grid Name="GridBackgroundCoverHolder">
<Grid Name="GridBackgroundCover" Visibility="Collapsed" Background="#1F1F1F" /> <Grid Name="GridBackgroundCover" Visibility="Collapsed" Background="#1F1F1F" />
</Grid> </Grid>
@ -189,7 +189,7 @@
<Border.RenderTransform> <Border.RenderTransform>
<TransformGroup> <TransformGroup>
<RotateTransform x:Name="StrokeSelectionBorderRotateTransform" CenterX="0" CenterY="0" /> <RotateTransform x:Name="StrokeSelectionBorderRotateTransform" CenterX="0" CenterY="0" />
<TranslateTransform x:Name="StrokeSelectionBorderTranslateTransform" X="0" Y="0"/> <TranslateTransform x:Name="StrokeSelectionBorderTranslateTransform" X="0" Y="0" />
</TransformGroup> </TransformGroup>
</Border.RenderTransform> </Border.RenderTransform>
<Grid Margin="-9" Name="StrokeSelectionBorderGrid"> <Grid Margin="-9" Name="StrokeSelectionBorderGrid">
@ -300,7 +300,7 @@
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</Border> </Border>
</Border> </Border>
<Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa"/> <Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa" />
<Border Name="BorderImageRotateClockwise" Background="Transparent" RenderTransformOrigin="0.5,0.5" <Border Name="BorderImageRotateClockwise" Background="Transparent" RenderTransformOrigin="0.5,0.5"
MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseUp="ImageRotateClockwise_MouseUp"> MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseUp="ImageRotateClockwise_MouseUp">
<Border Padding="7,0" Margin="3" CornerRadius="4"> <Border Padding="7,0" Margin="3" CornerRadius="4">
@ -362,7 +362,7 @@
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</Border> </Border>
</Border> </Border>
<Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa"/> <Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa" />
<Border Name="BorderImageFlipHorizontal" Background="Transparent" <Border Name="BorderImageFlipHorizontal" Background="Transparent"
MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseUp="ImageFlip_MouseUp"> MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseUp="ImageFlip_MouseUp">
<Border Padding="7,0" Margin="3" CornerRadius="4"> <Border Padding="7,0" Margin="3" CornerRadius="4">
@ -399,10 +399,10 @@
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</Border> </Border>
</Border> </Border>
<Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa"/> <Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa" />
<Border Name="BorderStrokeSelectionLock" Background="Transparent" <Border Name="BorderStrokeSelectionLock" Background="Transparent"
MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseUp="BorderStrokeSelectionLock_MouseUp"> MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseUp="BorderStrokeSelectionLock_MouseUp">
<Border Padding="7,0" Margin="3" CornerRadius="4" > <Border Padding="7,0" Margin="3" CornerRadius="4">
<ui:SimpleStackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Spacing="4" Orientation="Horizontal"> <ui:SimpleStackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Spacing="4" Orientation="Horizontal">
<Image Width="24" Height="24" Name="BorderStrokeSelectionLock_LockClose" Visibility="Collapsed"> <Image Width="24" Height="24" Name="BorderStrokeSelectionLock_LockClose" Visibility="Collapsed">
<Image.Source> <Image.Source>
@ -465,7 +465,7 @@
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</Border> </Border>
</Border> </Border>
<Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa"/> <Line X1="0" X2="0" Y1="0" Y2="47" Height="47" Margin="2,-2" StrokeThickness="1" Stroke="#66a1a1aa" />
<Border Name="BorderStrokeMoreMenuButton" Background="Transparent" <Border Name="BorderStrokeMoreMenuButton" Background="Transparent"
MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave" MouseDown="BorderStrokeSelectionToolButton_MouseDown" MouseLeave="BorderStrokeSelectionToolButton_MouseLeave"
MouseUp="BorderStrokeMoreMenuButton_MouseUp"> MouseUp="BorderStrokeMoreMenuButton_MouseUp">
@ -490,11 +490,11 @@
</Border> </Border>
</Grid> </Grid>
<Grid Background="Transparent" Name="GridEraserOverlay" Visibility="Collapsed" IsHitTestVisible="True"> <Grid Background="Transparent" Name="GridEraserOverlay" Visibility="Collapsed" IsHitTestVisible="True">
<Border Loaded="EraserOverlay_Loaded" Background="Transparent" ForceCursor="True" Cursor="Arrow"/> <Border Loaded="EraserOverlay_Loaded" Background="Transparent" ForceCursor="True" Cursor="Arrow" />
<helpers:DrawingVisualCanvas IsHitTestVisible="False" x:Name="EraserOverlay_DrawingVisual"/> <helpers:DrawingVisualCanvas IsHitTestVisible="False" x:Name="EraserOverlay_DrawingVisual" />
</Grid> </Grid>
<Grid Name="ShapeDrawingOverlay"> <Grid Name="ShapeDrawingOverlay">
<inkCanvas:ShapeDrawingLayer x:Name="ShapeDrawingV2Layer"/> <inkCanvas:ShapeDrawingLayer x:Name="ShapeDrawingV2Layer" />
</Grid> </Grid>
<!--// BlackBoard 界面 //--> <!--// BlackBoard 界面 //-->
@ -644,7 +644,7 @@
</Image.Source> </Image.Source>
</Image> </Image>
<TextBlock Text="新页面" Foreground="#18181b" VerticalAlignment="Bottom" <TextBlock Text="新页面" Foreground="#18181b" VerticalAlignment="Bottom"
HorizontalAlignment="Center" FontSize="12" Name="BtnWhiteboardAddTextBlockLeft"/> HorizontalAlignment="Center" FontSize="12" Name="BtnWhiteboardAddTextBlockLeft" />
</Grid> </Grid>
</Border> </Border>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
@ -1086,7 +1086,7 @@
</Grid> </Grid>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<Border Name="BoardSideBtnMouseFeedbakBorder" Visibility="Collapsed" IsHitTestVisible="False" Width="60" HorizontalAlignment="Left" Height="50" Padding="1"> <Border Name="BoardSideBtnMouseFeedbakBorder" Visibility="Collapsed" IsHitTestVisible="False" Width="60" HorizontalAlignment="Left" Height="50" Padding="1">
<Border CornerRadius="4.5,0,0,0" Background="#2509090b"/> <Border CornerRadius="4.5,0,0,0" Background="#2509090b" />
</Border> </Border>
</Grid> </Grid>
</Border> </Border>
@ -2469,7 +2469,7 @@
</Border> </Border>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<Border Name="BoardMouseFeedbakBorder" Visibility="Collapsed" IsHitTestVisible="False" Width="60" HorizontalAlignment="Left" Height="50" Padding="1"> <Border Name="BoardMouseFeedbakBorder" Visibility="Collapsed" IsHitTestVisible="False" Width="60" HorizontalAlignment="Left" Height="50" Padding="1">
<Border CornerRadius="4.5,0,0,0" Background="#2509090b"/> <Border CornerRadius="4.5,0,0,0" Background="#2509090b" />
</Border> </Border>
</Grid> </Grid>
</Border> </Border>
@ -2936,7 +2936,7 @@
<!-- 通知弹窗 --> <!-- 通知弹窗 -->
<Grid Name="GridNotifications" Margin="0,110" Visibility="Visible" HorizontalAlignment="Center" <Grid Name="GridNotifications" Margin="0,110" Visibility="Visible" HorizontalAlignment="Center"
VerticalAlignment="Bottom"/> VerticalAlignment="Bottom" />
<!--// Old UI //--> <!--// Old UI //-->
<!--<Viewbox Name="ViewBoxStackPanelMain" Visibility="Collapsed" Margin="10,10,10,55" HorizontalAlignment="Right" <!--<Viewbox Name="ViewBoxStackPanelMain" Visibility="Collapsed" Margin="10,10,10,55" HorizontalAlignment="Right"
VerticalAlignment="Bottom" Width="46"> VerticalAlignment="Bottom" Width="46">
@ -3399,11 +3399,11 @@
<Grid> <Grid>
<Canvas Name="FloatingbarSelectionBGCanvas" Margin="2,0,2,0"> <Canvas Name="FloatingbarSelectionBGCanvas" Margin="2,0,2,0">
<Border Name="FloatingbarSelectionBG" Visibility="Hidden" Width="{Binding ElementName=Cursor_Icon, Path=Width}" Height="34" <Border Name="FloatingbarSelectionBG" Visibility="Hidden" Width="{Binding ElementName=Cursor_Icon, Path=Width}" Height="34"
Canvas.Left="28" Margin="0,-2,0,-2" Background="#2563eb"/> Canvas.Left="28" Margin="0,-2,0,-2" Background="#2563eb" />
</Canvas> </Canvas>
<Canvas Name="FloatingbarFreezeBtnBGCanvas" Margin="2,0,2,0" Visibility="Collapsed"> <Canvas Name="FloatingbarFreezeBtnBGCanvas" Margin="2,0,2,0" Visibility="Collapsed">
<Border Name="FloatingbarFreezeBtnBG" Visibility="Hidden" Width="{Binding ElementName=Cursor_Icon, Path=Width}" Height="34" <Border Name="FloatingbarFreezeBtnBG" Visibility="Hidden" Width="{Binding ElementName=Cursor_Icon, Path=Width}" Height="34"
Canvas.Left="196" Margin="0,-2,0,-2" Background="#2563eb"/> Canvas.Left="196" Margin="0,-2,0,-2" Background="#2563eb" />
</Canvas> </Canvas>
<ui:SimpleStackPanel Margin="2,0" Name="StackPanelFloatingBar" Orientation="Horizontal"> <ui:SimpleStackPanel Margin="2,0" Name="StackPanelFloatingBar" Orientation="Horizontal">
<!--<ui:SimpleStackPanel Name="Cursor_Icon" MouseDown="Border_MouseDown" MouseUp="CursorIcon_Click"--> <!--<ui:SimpleStackPanel Name="Cursor_Icon" MouseDown="Border_MouseDown" MouseUp="CursorIcon_Click"-->
@ -6357,7 +6357,7 @@
TextWrapping="Wrap" TextWrapping="Wrap"
Foreground="#a1a1aa" /> Foreground="#a1a1aa" />
<Grid> <Grid>
<Image Source="Resources/Icons-png/windows-ink.png" RenderOptions.BitmapScalingMode="HighQuality"/> <Image Source="Resources/Icons-png/windows-ink.png" RenderOptions.BitmapScalingMode="HighQuality" />
<Canvas> <Canvas>
<Border Canvas.Top="7" Canvas.Left="95" CornerRadius="6.25" Background="#5522c55e" Height="12.5" Width="25.75"></Border> <Border Canvas.Top="7" Canvas.Left="95" CornerRadius="6.25" Background="#5522c55e" Height="12.5" Width="25.75"></Border>
<Border Canvas.Top="7" Canvas.Left="124.5" CornerRadius="6.25" Background="#553b82f6" Height="12.5" Width="25.75"></Border> <Border Canvas.Top="7" Canvas.Left="124.5" CornerRadius="6.25" Background="#553b82f6" Height="12.5" Width="25.75"></Border>
@ -6729,7 +6729,7 @@
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchOnlyDisplayEraserBtn" Name="ToggleSwitchOnlyDisplayEraserBtn"
IsOn="True" FontFamily="Microsoft YaHei UI" IsOn="True" FontFamily="Microsoft YaHei UI"
FontWeight="Bold" Toggled="ToggleSwitchOnlyDisplayEraserBtn_OnToggled"/> FontWeight="Bold" Toggled="ToggleSwitchOnlyDisplayEraserBtn_OnToggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<TextBlock <TextBlock
Text="# 当橡皮按钮只显示线擦或板擦时,开启该选项可以让该按钮直接显示为“橡皮”按钮,而不显示是板擦按钮还是线擦按钮。" Text="# 当橡皮按钮只显示线擦或板擦时,开启该选项可以让该按钮直接显示为“橡皮”按钮,而不显示是板擦按钮还是线擦按钮。"
@ -7443,18 +7443,6 @@
TouchDown="BorderCalculateMultiplier_TouchDown" /> TouchDown="BorderCalculateMultiplier_TouchDown" />
<TextBlock Name="TextBlockShowCalculatedMultiplier" FontSize="14" /> <TextBlock Name="TextBlockShowCalculatedMultiplier" FontSize="14" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="橡皮擦绑定触摸大小倍数"
VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchEraserBindTouchMultiplier" IsOn="True"
FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchEraserBindTouchMultiplier_Toggled" />
</ui:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" <Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" /> StrokeThickness="1" Margin="0,4,0,4" />
@ -7487,6 +7475,101 @@
Text="{Binding Value, ElementName=FingerModeBoundsWidthSlider, Mode=OneWay}" Text="{Binding Value, ElementName=FingerModeBoundsWidthSlider, Mode=OneWay}"
VerticalAlignment="Bottom" Margin="10,0,0,8" FontSize="14" Width="30" /> VerticalAlignment="Bottom" Margin="10,0,0,8" FontSize="14" Width="30" />
</StackPanel> </StackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Text="# ThresholdValue 参数用来区分 墨迹擦、面积擦。触控面积达到 BoundsWidth 的界限后,触控面积小于等于 BoundsWidth * ThresholdValue 则为墨迹擦,大于则为面积擦。默认值均为 2.5"
TextWrapping="Wrap" Foreground="#a1a1aa" />
<StackPanel Orientation="Horizontal">
<Slider
x:Name="NibModeBoundsWidthThresholdValueSlider"
Width="340"
ui:ControlHelper.Header="笔尖模式 ThresholdValue"
FontSize="15"
IsSnapToTickEnabled="True"
Maximum="10"
Minimum="0"
TickFrequency="0.01"
TickPlacement="None"
ValueChanged="NibModeBoundsWidthThresholdValueSlider_ValueChanged"
Value="2.5" />
<TextBlock
Width="30"
Margin="10,0,0,8"
VerticalAlignment="Bottom"
FontSize="14"
Text="{Binding Value, ElementName=NibModeBoundsWidthThresholdValueSlider, Mode=OneWay}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Slider
x:Name="FingerModeBoundsWidthThresholdValueSlider"
Width="340"
ui:ControlHelper.Header="手指模式 ThresholdValue"
FontSize="15"
IsSnapToTickEnabled="True"
Maximum="10"
Minimum="0"
TickFrequency="0.01"
TickPlacement="None"
ValueChanged="FingerModeBoundsWidthThresholdValueSlider_ValueChanged"
Value="2.5" />
<TextBlock
Width="30"
Margin="10,0,0,8"
VerticalAlignment="Bottom"
FontSize="14"
Text="{Binding Value, ElementName=FingerModeBoundsWidthThresholdValueSlider, Mode=OneWay}" />
</StackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Text="# EraserSize 参数用来调节触控的面积擦大小。默认值均为 0.8"
TextWrapping="Wrap" Foreground="#a1a1aa" />
<StackPanel Orientation="Horizontal">
<Slider
x:Name="NibModeBoundsWidthEraserSizeSlider"
Width="340"
ui:ControlHelper.Header="笔尖模式 EraserSize"
FontSize="15"
IsSnapToTickEnabled="True"
Maximum="10"
Minimum="0.01"
TickFrequency="0.01"
TickPlacement="None"
ValueChanged="NibModeBoundsWidthEraserSizeSlider_ValueChanged"
Value="0.8" />
<TextBlock
Width="30"
Margin="10,0,0,8"
VerticalAlignment="Bottom"
FontSize="14"
Text="{Binding Value, ElementName=NibModeBoundsWidthEraserSizeSlider, Mode=OneWay}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Slider
x:Name="FingerModeBoundsWidthEraserSizeSlider"
Width="340"
ui:ControlHelper.Header="手指模式 EraserSize"
FontSize="15"
IsSnapToTickEnabled="True"
Maximum="10"
Minimum="0.01"
TickFrequency="0.01"
TickPlacement="None"
ValueChanged="FingerModeBoundsWidthEraserSizeSlider_ValueChanged"
Value="0.8" />
<TextBlock
Width="30"
Margin="10,0,0,8"
VerticalAlignment="Bottom"
FontSize="14"
Text="{Binding Value, ElementName=FingerModeBoundsWidthEraserSizeSlider, Mode=OneWay}" />
</StackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Text="# 四边红外触控屏启用 四边红外模式 有利于触控面积的确定"
TextWrapping="Wrap" Foreground="#a1a1aa" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="四边红外模式" VerticalAlignment="Center" <TextBlock Foreground="#fafafa" Text="四边红外模式" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" /> FontSize="14" Margin="0,0,16,0" />
@ -8195,7 +8278,7 @@
SelectedIndex="1" HorizontalAlignment="Center"> SelectedIndex="1" HorizontalAlignment="Center">
<ComboBox.ItemContainerStyle> <ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}"> <Style TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Setter Property="HorizontalAlignment" Value="Left"/> <Setter Property="HorizontalAlignment" Value="Left" />
</Style> </Style>
</ComboBox.ItemContainerStyle> </ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
@ -8215,7 +8298,7 @@
FontSize="14" Margin="0,0,16,0" /> FontSize="14" Margin="0,0,16,0" />
<ui:SimpleStackPanel Orientation="Horizontal" Spacing="10"> <ui:SimpleStackPanel Orientation="Horizontal" Spacing="10">
<TextBox ui:TextBoxHelper.IsDeleteButtonVisible="False" Width="320" x:Name="CustomStorageLocation" Text="" <TextBox ui:TextBoxHelper.IsDeleteButtonVisible="False" Width="320" x:Name="CustomStorageLocation" Text=""
TextWrapping="NoWrap" AcceptsTab="False" AcceptsReturn="False" IsReadOnly="True" IsReadOnlyCaretVisible="True"/> TextWrapping="NoWrap" AcceptsTab="False" AcceptsReturn="False" IsReadOnly="True" IsReadOnlyCaretVisible="True" />
<Button Name="CustomStorageLocationButton" Content="浏览" <Button Name="CustomStorageLocationButton" Content="浏览"
Click="CustomStorageLocationButton_Click" /> Click="CustomStorageLocationButton_Click" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
@ -8244,12 +8327,12 @@
</DrawingImage> </DrawingImage>
</WrapPanel.Resources> </WrapPanel.Resources>
<ui:SimpleStackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,16,0" Name="CustomStorageNonRemovableDriveTip"> <ui:SimpleStackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,16,0" Name="CustomStorageNonRemovableDriveTip">
<Image Width="18" Height="18" Source="{StaticResource SuccessIcon}"/> <Image Width="18" Height="18" Source="{StaticResource SuccessIcon}" />
<TextBlock FontSize="13" VerticalAlignment="Center" Text="非可移动存储介质"/> <TextBlock FontSize="13" VerticalAlignment="Center" Text="非可移动存储介质" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,13,0" Name="CustomStorageWritableTip"> <ui:SimpleStackPanel Orientation="Horizontal" Spacing="4" Margin="0,0,13,0" Name="CustomStorageWritableTip">
<Image Width="18" Height="18" Source="{StaticResource FailedIcon}"/> <Image Width="18" Height="18" Source="{StaticResource FailedIcon}" />
<TextBlock FontSize="13" VerticalAlignment="Center" Text="目录似乎没有写入权限"/> <TextBlock FontSize="13" VerticalAlignment="Center" Text="目录似乎没有写入权限" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</WrapPanel> </WrapPanel>
<TextBlock Text="# 请注意检查存储文件夹是否有写入权限" TextWrapping="Wrap" Foreground="#a1a1aa" /> <TextBlock Text="# 请注意检查存储文件夹是否有写入权限" TextWrapping="Wrap" Foreground="#a1a1aa" />
@ -8269,21 +8352,21 @@
FontSize="20" /> FontSize="20" />
<Border Height="24" Background="#27272a" Width="388"> <Border Height="24" Background="#27272a" Width="388">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Background="#0ea5e9" Name="DiskUsageUsedSpaceBorder" Width="123"/> <Border Background="#0ea5e9" Name="DiskUsageUsedSpaceBorder" Width="123" />
<Border Background="#ef4444" Name="DiskUsageICCSpaceBorder" Width="3"/> <Border Background="#ef4444" Name="DiskUsageICCSpaceBorder" Width="3" />
</StackPanel> </StackPanel>
</Border> </Border>
<ui:SimpleStackPanel Orientation="Horizontal" Spacing="16"> <ui:SimpleStackPanel Orientation="Horizontal" Spacing="16">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#0ea5e9"/> <Border Width="12" Height="12" Background="#0ea5e9" />
<TextBlock Text="硬盘其他占用" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="硬盘其他占用" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#ef4444"/> <Border Width="12" Height="12" Background="#ef4444" />
<TextBlock Text="ICC数据占用" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="ICC数据占用" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#27272a"/> <Border Width="12" Height="12" Background="#27272a" />
<TextBlock Text="空闲空间" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="空闲空间" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
@ -8297,34 +8380,34 @@
Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" /> Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" />
<Border Height="24" Background="#27272a" Width="388"> <Border Height="24" Background="#27272a" Width="388">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Name="StorageDirectoryAutoSavedInkUsageBorder" Background="#f97316" Width="48"/> <Border Name="StorageDirectoryAutoSavedInkUsageBorder" Background="#f97316" Width="48" />
<Border Name="StorageDirectoryQuotedPhotoUsageBorder" Background="#eab308" Width="12"/> <Border Name="StorageDirectoryQuotedPhotoUsageBorder" Background="#eab308" Width="12" />
<Border Name="StorageDirectoryExportedInkUsageBorder" Background="#22c55e" Width="67"/> <Border Name="StorageDirectoryExportedInkUsageBorder" Background="#22c55e" Width="67" />
<Border Name="StorageDirectoryCachesUsageBorder" Background="#0ea5e9" Width="193"/> <Border Name="StorageDirectoryCachesUsageBorder" Background="#0ea5e9" Width="193" />
<Border Name="StorageDirectoryAutoSavedSnapshotUsageBorder" Background="#a855f7" Width="68"/> <Border Name="StorageDirectoryAutoSavedSnapshotUsageBorder" Background="#a855f7" Width="68" />
</StackPanel> </StackPanel>
</Border> </Border>
<ui:SimpleStackPanel Orientation="Horizontal" Spacing="16"> <ui:SimpleStackPanel Orientation="Horizontal" Spacing="16">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#f97316"/> <Border Width="12" Height="12" Background="#f97316" />
<TextBlock Text="自动保存的墨迹" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="自动保存的墨迹" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#eab308"/> <Border Width="12" Height="12" Background="#eab308" />
<TextBlock Text="板书的图片引用" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="板书的图片引用" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#22c55e"/> <Border Width="12" Height="12" Background="#22c55e" />
<TextBlock Text="导出的板书文件" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="导出的板书文件" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" Spacing="16"> <ui:SimpleStackPanel Orientation="Horizontal" Spacing="16">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#0ea5e9"/> <Border Width="12" Height="12" Background="#0ea5e9" />
<TextBlock Text="缓存文件" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="缓存文件" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Border Width="12" Height="12" Background="#a855f7"/> <Border Width="12" Height="12" Background="#a855f7" />
<TextBlock Text="自动保存的截图文件" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" /> <TextBlock Text="自动保存的截图文件" Margin="3,0,0,0" VerticalAlignment="Center" Foreground="#f4f4f5" />
</StackPanel> </StackPanel>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
@ -8602,7 +8685,7 @@
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchScreenshotUsingMagnificationAPI" Name="ToggleSwitchScreenshotUsingMagnificationAPI"
IsOn="True" FontFamily="Microsoft YaHei UI" IsOn="True" FontFamily="Microsoft YaHei UI"
FontWeight="Bold" Toggled="ToggleSwitchScreenshotUsingMagnificationAPI_OnToggled"/> FontWeight="Bold" Toggled="ToggleSwitchScreenshotUsingMagnificationAPI_OnToggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<TextBlock Text="# 使用 Magnification API 和弃用的函数 MagSetImageScalingCallback 实现过滤ICC窗口截图。" <TextBlock Text="# 使用 Magnification API 和弃用的函数 MagSetImageScalingCallback 实现过滤ICC窗口截图。"
TextWrapping="Wrap" Foreground="#a1a1aa" /> TextWrapping="Wrap" Foreground="#a1a1aa" />
@ -8620,7 +8703,7 @@
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchCopyScreenshotToClipboard" Name="ToggleSwitchCopyScreenshotToClipboard"
IsOn="True" FontFamily="Microsoft YaHei UI" IsOn="True" FontFamily="Microsoft YaHei UI"
FontWeight="Bold" Toggled="ToggleSwitchCopyScreenshotToClipboard_OnToggled"/> FontWeight="Bold" Toggled="ToggleSwitchCopyScreenshotToClipboard_OnToggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="截图时隐藏ICC主窗口" <TextBlock Foreground="#fafafa" Text="截图时隐藏ICC主窗口"
@ -8628,7 +8711,7 @@
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchHideMainWinWhenScreenshot" Name="ToggleSwitchHideMainWinWhenScreenshot"
IsOn="True" FontFamily="Microsoft YaHei UI" IsOn="True" FontFamily="Microsoft YaHei UI"
FontWeight="Bold" Toggled="ToggleSwitchHideMainWinWhenScreenshot_OnToggled"/> FontWeight="Bold" Toggled="ToggleSwitchHideMainWinWhenScreenshot_OnToggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="截图时附加墨迹到截图文件上" <TextBlock Foreground="#fafafa" Text="截图时附加墨迹到截图文件上"
@ -8636,7 +8719,7 @@
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchAttachInkWhenScreenshot" Name="ToggleSwitchAttachInkWhenScreenshot"
IsOn="True" FontFamily="Microsoft YaHei UI" IsOn="True" FontFamily="Microsoft YaHei UI"
FontWeight="Bold" Toggled="ToggleSwitchAttachInkWhenScreenshot_OnToggled"/> FontWeight="Bold" Toggled="ToggleSwitchAttachInkWhenScreenshot_OnToggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="窗口截图只截取最大化窗口" <TextBlock Foreground="#fafafa" Text="窗口截图只截取最大化窗口"
@ -8644,7 +8727,7 @@
<ui:ToggleSwitch OnContent="" OffContent="" <ui:ToggleSwitch OnContent="" OffContent=""
Name="ToggleSwitchOnlySnapshotMaximizeWindow" Name="ToggleSwitchOnlySnapshotMaximizeWindow"
IsOn="True" FontFamily="Microsoft YaHei UI" IsOn="True" FontFamily="Microsoft YaHei UI"
FontWeight="Bold" Toggled="ToggleSwitchOnlySnapshotMaximizeWindow_OnToggled"/> FontWeight="Bold" Toggled="ToggleSwitchOnlySnapshotMaximizeWindow_OnToggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Vertical" HorizontalAlignment="Left" Spacing="8"> <ui:SimpleStackPanel Orientation="Vertical" HorizontalAlignment="Left" Spacing="8">
<TextBlock Foreground="#fafafa" Text="截图文件文件名" VerticalAlignment="Center" <TextBlock Foreground="#fafafa" Text="截图文件文件名" VerticalAlignment="Center"
@ -8653,29 +8736,29 @@
<TextBox ui:TextBoxHelper.IsDeleteButtonVisible="False" Width="320" x:Name="ScreenshotFileName" Text='Screenshot-[YYYY]-[MM]-[DD]-[HH]-[mm]-[ss].png' <TextBox ui:TextBoxHelper.IsDeleteButtonVisible="False" Width="320" x:Name="ScreenshotFileName" Text='Screenshot-[YYYY]-[MM]-[DD]-[HH]-[mm]-[ss].png'
TextWrapping="NoWrap" AcceptsTab="False" AcceptsReturn="False" TextWrapping="NoWrap" AcceptsTab="False" AcceptsReturn="False"
TextChanged="ScreenshotFileName_TextChanged" /> TextChanged="ScreenshotFileName_TextChanged" />
<Button Name="ScreenshotFileNameResetButton" Content="重置"/> <Button Name="ScreenshotFileNameResetButton" Content="重置" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Vertical" Spacing="2"> <ui:SimpleStackPanel Orientation="Vertical" Spacing="2">
<TextBlock Text="# 模板语法请参考下面可用的语法:" TextWrapping="Wrap" Foreground="#a1a1aa" /> <TextBlock Text="# 模板语法请参考下面可用的语法:" TextWrapping="Wrap" Foreground="#a1a1aa" />
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition/> <ColumnDefinition />
<ColumnDefinition/> <ColumnDefinition />
<ColumnDefinition/> <ColumnDefinition />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition/> <RowDefinition />
<RowDefinition/> <RowDefinition />
<RowDefinition/> <RowDefinition />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[YYYY] - 日期年份"/> <TextBlock Grid.Column="0" Grid.Row="0" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[YYYY] - 日期年份" />
<TextBlock Grid.Column="1" Grid.Row="0" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[MM] - 日期月份"/> <TextBlock Grid.Column="1" Grid.Row="0" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[MM] - 日期月份" />
<TextBlock Grid.Column="2" Grid.Row="0" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[DD] - 日期号数"/> <TextBlock Grid.Column="2" Grid.Row="0" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[DD] - 日期号数" />
<TextBlock Grid.Column="0" Grid.Row="1" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[HH] - 日期小时数"/> <TextBlock Grid.Column="0" Grid.Row="1" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[HH] - 日期小时数" />
<TextBlock Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[mm] - 日期分钟数"/> <TextBlock Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[mm] - 日期分钟数" />
<TextBlock Grid.Column="2" Grid.Row="1" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[ss] - 日期秒数"/> <TextBlock Grid.Column="2" Grid.Row="1" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[ss] - 日期秒数" />
<TextBlock Grid.Column="0" Grid.Row="2" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[width] - 图片宽度"/> <TextBlock Grid.Column="0" Grid.Row="2" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[width] - 图片宽度" />
<TextBlock Grid.Column="1" Grid.Row="2" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[height] - 图片高度"/> <TextBlock Grid.Column="1" Grid.Row="2" TextWrapping="Wrap" Foreground="#a1a1aa" Text="[height] - 图片高度" />
</Grid> </Grid>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
@ -8745,7 +8828,7 @@
<TextBlock <TextBlock
Text="# InkCanvasForClass 项目非常需要您的帮助,您的捐款是我们继续开发的动力,同时您也可以成为 Golden Sponsor。" Text="# InkCanvasForClass 项目非常需要您的帮助,您的捐款是我们继续开发的动力,同时您也可以成为 Golden Sponsor。"
TextWrapping="Wrap" Foreground="#a1a1aa" /> TextWrapping="Wrap" Foreground="#a1a1aa" />
<Image Margin="-12,-4,-12,00" Source="./Resources/qrcodes.png"/> <Image Margin="-12,-4,-12,00" Source="./Resources/qrcodes.png" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</GroupBox> </GroupBox>
<GroupBox Name="SettingsAboutGroupBox" Margin="0,0,0,100"> <GroupBox Name="SettingsAboutGroupBox" Margin="0,0,0,100">
@ -8768,7 +8851,7 @@
<TextBlock x:Name="AppVersionTextBlock" FontSize="18" FontWeight="Bold" <TextBlock x:Name="AppVersionTextBlock" FontSize="18" FontWeight="Bold"
Text="5.X.X.X" /> Text="5.X.X.X" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<Image Name="CustomCopyrightBanner"/> <Image Name="CustomCopyrightBanner" />
<TextBlock <TextBlock
Text="# 使用和分发本软件前,请您应当且务必知晓相关开源协议,且您应当知晓本软件基于 https://github.com/WXRIW/Ink-Canvas 修改而成。" Text="# 使用和分发本软件前,请您应当且务必知晓相关开源协议,且您应当知晓本软件基于 https://github.com/WXRIW/Ink-Canvas 修改而成。"
TextWrapping="Wrap" Foreground="#a1a1aa" /> TextWrapping="Wrap" Foreground="#a1a1aa" />
@ -8904,7 +8987,7 @@
<TextBlock <TextBlock
Text="# 排名不分先后" Text="# 排名不分先后"
TextWrapping="Wrap" Foreground="#a1a1aa" /> TextWrapping="Wrap" Foreground="#a1a1aa" />
<Image Source="Resources/contributors.png"/> <Image Source="Resources/contributors.png" />
<ui:SimpleStackPanel Spacing="3" Orientation="Vertical"> <ui:SimpleStackPanel Spacing="3" Orientation="Vertical">
<TextBlock <TextBlock
Text="© 2024 Dubi906w(Kriastans) 版权所有" FontWeight="Bold" Text="© 2024 Dubi906w(Kriastans) 版权所有" FontWeight="Bold"
@ -9117,7 +9200,7 @@
<Grid> <Grid>
<Image Height="28" Width="28"> <Image Height="28" Width="28">
<Image.Source> <Image.Source>
<DrawingImage > <DrawingImage>
<DrawingImage.Drawing> <DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z"> <DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FFFFFFFF" Geometry="F0 M24,24z M0,0z M6.0798,3.17643C7.68668,2.57385 9.81582,2.25 12,2.25 14.1842,2.25 16.3133,2.57385 17.9202,3.17643 18.7225,3.47728 19.4021,3.85027 19.8944,4.29596 20.3864,4.7414 20.75,5.31783 20.75,6L20.75,12 20.75,18C20.75,18.6822 20.3864,19.2586 19.8944,19.704 19.4021,20.1497 18.7225,20.5227 17.9202,20.8236 16.3133,21.4261 14.1842,21.75 12,21.75 9.81582,21.75 7.68668,21.4261 6.0798,20.8236 5.27753,20.5227 4.5979,20.1497 4.10561,19.704 3.61358,19.2586 3.25,18.6822 3.25,18L3.25,12 3.25,6C3.25,5.31783 3.61358,4.7414 4.10561,4.29596 4.5979,3.85027 5.27753,3.47728 6.0798,3.17643z M4.75,14.1841L4.75,18C4.75,18.1135 4.80785,18.3164 5.11232,18.5921 5.41653,18.8675 5.90847,19.1573 6.60649,19.4191 8.00019,19.9417 9.94071,20.25 12,20.25 14.0593,20.25 15.9998,19.9417 17.3935,19.4191 18.0915,19.1573 18.5835,18.8675 18.8877,18.5921 19.1922,18.3164 19.25,18.1135 19.25,18L19.25,14.1841C18.8636,14.4248 18.4152,14.6379 17.9202,14.8236 16.3133,15.4261 14.1842,15.75 12,15.75 9.81582,15.75 7.68668,15.4261 6.0798,14.8236 5.58478,14.6379 5.13644,14.4248 4.75,14.1841z M19.25,12L19.25,8.18414C18.8636,8.42484 18.4152,8.63793 17.9202,8.82357 16.3133,9.42615 14.1842,9.75 12,9.75 9.81582,9.75 7.68668,9.42615 6.0798,8.82357 5.58478,8.63793 5.13644,8.42484 4.75,8.18414L4.75,12C4.75,12.1135 4.80785,12.3164 5.11232,12.5921 5.41653,12.8675 5.90847,13.1573 6.60649,13.4191 8.00019,13.9417 9.94071,14.25 12,14.25 14.0593,14.25 15.9998,13.9417 17.3935,13.4191 18.0915,13.1573 18.5835,12.8675 18.8877,12.5921 19.1922,12.3164 19.25,12.1135 19.25,12z M5.11232,6.59206C4.80785,6.3164 4.75,6.11348 4.75,6 4.75,5.88652 4.80784,5.6836 5.11232,5.40794 5.41653,5.13253 5.90847,4.84268 6.60649,4.58093 8.00019,4.05829 9.94071,3.75 12,3.75 14.0593,3.75 15.9998,4.05829 17.3935,4.58093 18.0915,4.84268 18.5835,5.13253 18.8877,5.40794 19.1922,5.6836 19.25,5.88652 19.25,6 19.25,6.11348 19.1922,6.3164 18.8877,6.59206 18.5835,6.86747 18.0915,7.15732 17.3935,7.41907 15.9998,7.94171 14.0593,8.25 12,8.25 9.94071,8.25 8.00019,7.94171 6.60649,7.41907 5.90847,7.15732 5.41653,6.86747 5.11232,6.59206z" /> <GeometryDrawing Brush="#FFFFFFFF" Geometry="F0 M24,24z M0,0z M6.0798,3.17643C7.68668,2.57385 9.81582,2.25 12,2.25 14.1842,2.25 16.3133,2.57385 17.9202,3.17643 18.7225,3.47728 19.4021,3.85027 19.8944,4.29596 20.3864,4.7414 20.75,5.31783 20.75,6L20.75,12 20.75,18C20.75,18.6822 20.3864,19.2586 19.8944,19.704 19.4021,20.1497 18.7225,20.5227 17.9202,20.8236 16.3133,21.4261 14.1842,21.75 12,21.75 9.81582,21.75 7.68668,21.4261 6.0798,20.8236 5.27753,20.5227 4.5979,20.1497 4.10561,19.704 3.61358,19.2586 3.25,18.6822 3.25,18L3.25,12 3.25,6C3.25,5.31783 3.61358,4.7414 4.10561,4.29596 4.5979,3.85027 5.27753,3.47728 6.0798,3.17643z M4.75,14.1841L4.75,18C4.75,18.1135 4.80785,18.3164 5.11232,18.5921 5.41653,18.8675 5.90847,19.1573 6.60649,19.4191 8.00019,19.9417 9.94071,20.25 12,20.25 14.0593,20.25 15.9998,19.9417 17.3935,19.4191 18.0915,19.1573 18.5835,18.8675 18.8877,18.5921 19.1922,18.3164 19.25,18.1135 19.25,18L19.25,14.1841C18.8636,14.4248 18.4152,14.6379 17.9202,14.8236 16.3133,15.4261 14.1842,15.75 12,15.75 9.81582,15.75 7.68668,15.4261 6.0798,14.8236 5.58478,14.6379 5.13644,14.4248 4.75,14.1841z M19.25,12L19.25,8.18414C18.8636,8.42484 18.4152,8.63793 17.9202,8.82357 16.3133,9.42615 14.1842,9.75 12,9.75 9.81582,9.75 7.68668,9.42615 6.0798,8.82357 5.58478,8.63793 5.13644,8.42484 4.75,8.18414L4.75,12C4.75,12.1135 4.80785,12.3164 5.11232,12.5921 5.41653,12.8675 5.90847,13.1573 6.60649,13.4191 8.00019,13.9417 9.94071,14.25 12,14.25 14.0593,14.25 15.9998,13.9417 17.3935,13.4191 18.0915,13.1573 18.5835,12.8675 18.8877,12.5921 19.1922,12.3164 19.25,12.1135 19.25,12z M5.11232,6.59206C4.80785,6.3164 4.75,6.11348 4.75,6 4.75,5.88652 4.80784,5.6836 5.11232,5.40794 5.41653,5.13253 5.90847,4.84268 6.60649,4.58093 8.00019,4.05829 9.94071,3.75 12,3.75 14.0593,3.75 15.9998,4.05829 17.3935,4.58093 18.0915,4.84268 18.5835,5.13253 18.8877,5.40794 19.1922,5.6836 19.25,5.88652 19.25,6 19.25,6.11348 19.1922,6.3164 18.8877,6.59206 18.5835,6.86747 18.0915,7.15732 17.3935,7.41907 15.9998,7.94171 14.0593,8.25 12,8.25 9.94071,8.25 8.00019,7.94171 6.60649,7.41907 5.90847,7.15732 5.41653,6.86747 5.11232,6.59206z" />

View File

@ -1864,12 +1864,6 @@ namespace Ink_Canvas {
SaveSettingsToFile(); SaveSettingsToFile();
} }
private void ToggleSwitchEraserBindTouchMultiplier_Toggled(object sender, RoutedEventArgs e) {
if (!isLoaded) return;
Settings.Advanced.EraserBindTouchMultiplier = ToggleSwitchEraserBindTouchMultiplier.IsOn;
SaveSettingsToFile();
}
private void NibModeBoundsWidthSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { private void NibModeBoundsWidthSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) {
if (!isLoaded) return; if (!isLoaded) return;
Settings.Advanced.NibModeBoundsWidth = (int)e.NewValue; Settings.Advanced.NibModeBoundsWidth = (int)e.NewValue;
@ -1894,6 +1888,34 @@ namespace Ink_Canvas {
SaveSettingsToFile(); SaveSettingsToFile();
} }
private void NibModeBoundsWidthThresholdValueSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (!isLoaded) return;
Settings.Advanced.NibModeBoundsWidthThresholdValue = (double)e.NewValue;
SaveSettingsToFile();
}
private void FingerModeBoundsWidthThresholdValueSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (!isLoaded) return;
Settings.Advanced.FingerModeBoundsWidthThresholdValue = (double)e.NewValue;
SaveSettingsToFile();
}
private void NibModeBoundsWidthEraserSizeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (!isLoaded) return;
Settings.Advanced.NibModeBoundsWidthEraserSize = (double)e.NewValue;
SaveSettingsToFile();
}
private void FingerModeBoundsWidthEraserSizeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (!isLoaded) return;
Settings.Advanced.FingerModeBoundsWidthEraserSize = (double)e.NewValue;
SaveSettingsToFile();
}
private void ToggleSwitchIsQuadIR_Toggled(object sender, RoutedEventArgs e) { private void ToggleSwitchIsQuadIR_Toggled(object sender, RoutedEventArgs e) {
if (!isLoaded) return; if (!isLoaded) return;
Settings.Advanced.IsQuadIR = ToggleSwitchIsQuadIR.IsOn; Settings.Advanced.IsQuadIR = ToggleSwitchIsQuadIR.IsOn;

View File

@ -680,9 +680,12 @@ namespace Ink_Canvas {
TouchMultiplierSlider.Value = Settings.Advanced.TouchMultiplier; TouchMultiplierSlider.Value = Settings.Advanced.TouchMultiplier;
FingerModeBoundsWidthSlider.Value = Settings.Advanced.FingerModeBoundsWidth; FingerModeBoundsWidthSlider.Value = Settings.Advanced.FingerModeBoundsWidth;
NibModeBoundsWidthSlider.Value = Settings.Advanced.NibModeBoundsWidth; NibModeBoundsWidthSlider.Value = Settings.Advanced.NibModeBoundsWidth;
ToggleSwitchIsLogEnabled.IsOn = Settings.Advanced.IsLogEnabled; FingerModeBoundsWidthThresholdValueSlider.Value = Settings.Advanced.FingerModeBoundsWidthThresholdValue;
NibModeBoundsWidthThresholdValueSlider.Value = Settings.Advanced.NibModeBoundsWidthThresholdValue;
FingerModeBoundsWidthEraserSizeSlider.Value = Settings.Advanced.FingerModeBoundsWidthEraserSize;
NibModeBoundsWidthEraserSizeSlider.Value = Settings.Advanced.NibModeBoundsWidthEraserSize;
ToggleSwitchEraserBindTouchMultiplier.IsOn = Settings.Advanced.EraserBindTouchMultiplier; ToggleSwitchIsLogEnabled.IsOn = Settings.Advanced.IsLogEnabled;
ToggleSwitchIsSpecialScreen.IsOn = Settings.Advanced.IsSpecialScreen; ToggleSwitchIsSpecialScreen.IsOn = Settings.Advanced.IsSpecialScreen;

View File

@ -27,8 +27,7 @@ namespace Ink_Canvas {
inkCanvas.EditingMode = InkCanvasEditingMode.Ink; inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
inkCanvas.Children.Clear(); inkCanvas.Children.Clear();
isInMultiTouchMode = false; isInMultiTouchMode = false;
} } else {
else {
inkCanvas.StylusDown += MainWindow_StylusDown; inkCanvas.StylusDown += MainWindow_StylusDown;
inkCanvas.StylusMove += MainWindow_StylusMove; inkCanvas.StylusMove += MainWindow_StylusMove;
inkCanvas.StylusUp += MainWindow_StylusUp; inkCanvas.StylusUp += MainWindow_StylusUp;
@ -41,7 +40,6 @@ namespace Ink_Canvas {
} }
private void MainWindow_TouchDown(object sender, TouchEventArgs e) { private void MainWindow_TouchDown(object sender, TouchEventArgs e) {
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice) { if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice) {
System.Windows.Forms.Cursor.Hide(); System.Windows.Forms.Cursor.Hide();
isCursorHidden = true; isCursorHidden = true;
@ -58,45 +56,39 @@ namespace Ink_Canvas {
// 不禁用手势橡皮 // 不禁用手势橡皮
if (!Settings.Gesture.DisableGestureEraser) { if (!Settings.Gesture.DisableGestureEraser) {
double boundWidth = e.GetTouchPoint(null).Bounds.Width, eraserMultiplier = 1.0; double boundWidth = e.GetTouchPoint(null).Bounds.Width;
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen) if ((Settings.Advanced.TouchMultiplier != 0 ||
eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier; !Settings.Advanced.IsSpecialScreen) //启用特殊屏幕且触摸倍数为 0 时禁用橡皮
&& (boundWidth > BoundsWidth)) {
if ((Settings.Advanced.TouchMultiplier != 0 || !Settings.Advanced.IsSpecialScreen) //启用特殊屏幕且触摸倍数为 0 时禁用橡皮
&& boundWidth > BoundsWidth * 2.5) {
if (drawingShapeMode == 0 && forceEraser) return; if (drawingShapeMode == 0 && forceEraser) return;
double k = 1; double EraserThresholdValue = Settings.Startup.IsEnableNibMode
switch (Settings.Canvas.EraserSize) { ? Settings.Advanced.NibModeBoundsWidthThresholdValue
case 0: : Settings.Advanced.FingerModeBoundsWidthThresholdValue;
k = 0.5; if (boundWidth > BoundsWidth * EraserThresholdValue) {
break; boundWidth *= (Settings.Startup.IsEnableNibMode
case 1: ? Settings.Advanced.NibModeBoundsWidthEraserSize
k = 0.8; : Settings.Advanced.FingerModeBoundsWidthEraserSize);
break; if (Settings.Advanced.IsSpecialScreen) boundWidth *= Settings.Advanced.TouchMultiplier;
case 3: inkCanvas.EraserShape = new EllipseStylusShape(boundWidth, boundWidth);
k = 1.25;
break;
case 4:
k = 1.8;
break;
}
inkCanvas.EraserShape = new EllipseStylusShape(boundWidth * k * eraserMultiplier * 0.25,
boundWidth * k * eraserMultiplier * 0.25);
TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.EraseByPoint; TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.EraseByPoint;
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint; inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
} else {
inkCanvas.EraserShape = new EllipseStylusShape(5, 5);
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
} }
else { } else {
inkCanvas.EraserShape =
forcePointEraser ? new EllipseStylusShape(50, 50) : new EllipseStylusShape(5, 5);
TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None; TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None;
inkCanvas.EditingMode = InkCanvasEditingMode.None; inkCanvas.EditingMode = InkCanvasEditingMode.None;
} }
} }
} }
private void MainWindow_StylusDown(object sender, StylusDownEventArgs e) { private void MainWindow_StylusDown(object sender, StylusDownEventArgs e) {
if (e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) { if (e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) {
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice && e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) { if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice &&
e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) {
System.Windows.Forms.Cursor.Hide(); System.Windows.Forms.Cursor.Hide();
isCursorHidden = true; isCursorHidden = true;
} }
@ -118,8 +110,10 @@ namespace Ink_Canvas {
inkCanvas.Strokes.Add(GetStrokeVisual(e.StylusDevice.Id).Stroke); inkCanvas.Strokes.Add(GetStrokeVisual(e.StylusDevice.Id).Stroke);
await Task.Delay(5); // 避免渲染墨迹完成前预览墨迹被删除导致墨迹闪烁 await Task.Delay(5); // 避免渲染墨迹完成前预览墨迹被删除导致墨迹闪烁
inkCanvas.Children.Remove(GetVisualCanvas(e.StylusDevice.Id)); inkCanvas.Children.Remove(GetVisualCanvas(e.StylusDevice.Id));
inkCanvas_StrokeCollected(inkCanvas, new InkCanvasStrokeCollectedEventArgs(GetStrokeVisual(e.StylusDevice.Id).Stroke)); inkCanvas_StrokeCollected(inkCanvas,
} catch (Exception ex) { new InkCanvasStrokeCollectedEventArgs(GetStrokeVisual(e.StylusDevice.Id).Stroke));
}
catch (Exception ex) {
Label.Content = ex.ToString(); Label.Content = ex.ToString();
} }
@ -142,9 +136,8 @@ namespace Ink_Canvas {
} }
private void MainWindow_StylusMove(object sender, StylusEventArgs e) { private void MainWindow_StylusMove(object sender, StylusEventArgs e) {
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice &&
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice && e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) {
{
System.Windows.Forms.Cursor.Hide(); System.Windows.Forms.Cursor.Hide();
isCursorHidden = true; isCursorHidden = true;
} }
@ -162,7 +155,8 @@ namespace Ink_Canvas {
foreach (var stylusPoint in stylusPointCollection) foreach (var stylusPoint in stylusPointCollection)
strokeVisual.Add(new StylusPoint(stylusPoint.X, stylusPoint.Y, stylusPoint.PressureFactor)); strokeVisual.Add(new StylusPoint(stylusPoint.X, stylusPoint.Y, stylusPoint.PressureFactor));
strokeVisual.Redraw(); strokeVisual.Redraw();
} catch { } }
catch { }
} }
} }
@ -184,7 +178,9 @@ namespace Ink_Canvas {
} }
private InkCanvasEditingMode GetTouchDownPointsList(int id) { private InkCanvasEditingMode GetTouchDownPointsList(int id) {
return TouchDownPointsList.TryGetValue(id, out var inkCanvasEditingMode) ? inkCanvasEditingMode : inkCanvas.EditingMode; return TouchDownPointsList.TryGetValue(id, out var inkCanvasEditingMode)
? inkCanvasEditingMode
: inkCanvas.EditingMode;
} }
private Dictionary<int, InkCanvasEditingMode> TouchDownPointsList { get; } = private Dictionary<int, InkCanvasEditingMode> TouchDownPointsList { get; } =
@ -222,9 +218,7 @@ namespace Ink_Canvas {
private bool forcePointEraser = true; private bool forcePointEraser = true;
private void Main_Grid_TouchDown(object sender, TouchEventArgs e) { private void Main_Grid_TouchDown(object sender, TouchEventArgs e) {
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice) {
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice)
{
System.Windows.Forms.Cursor.Hide(); System.Windows.Forms.Cursor.Hide();
isCursorHidden = true; isCursorHidden = true;
} }
@ -243,39 +237,27 @@ namespace Ink_Canvas {
inkCanvas.Opacity = 1; inkCanvas.Opacity = 1;
if (!Settings.Gesture.DisableGestureEraser) { if (!Settings.Gesture.DisableGestureEraser) {
double boundsWidth = GetTouchBoundWidth(e), eraserMultiplier = 1.0; double boundsWidth = GetTouchBoundWidth(e);
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen) if ((Settings.Advanced.TouchMultiplier != 0 ||
eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier; !Settings.Advanced.IsSpecialScreen) //启用特殊屏幕且触摸倍数为 0 时禁用橡皮
if (boundsWidth > BoundsWidth) { && (boundsWidth > BoundsWidth)) {
isLastTouchEraser = true; isLastTouchEraser = true;
if (drawingShapeMode == 0 && forceEraser) return; if (drawingShapeMode == 0 && forceEraser) return;
if (boundsWidth > BoundsWidth * 2.5) { double EraserThresholdValue = Settings.Startup.IsEnableNibMode
double k = 1; ? Settings.Advanced.NibModeBoundsWidthThresholdValue
switch (Settings.Canvas.EraserSize) { : Settings.Advanced.FingerModeBoundsWidthThresholdValue;
case 0: if (boundsWidth > BoundsWidth * EraserThresholdValue) {
k = 0.5; boundsWidth *= (Settings.Startup.IsEnableNibMode
break; ? Settings.Advanced.NibModeBoundsWidthEraserSize
case 1: : Settings.Advanced.FingerModeBoundsWidthEraserSize);
k = 0.8; if (Settings.Advanced.IsSpecialScreen) boundsWidth *= Settings.Advanced.TouchMultiplier;
break; inkCanvas.EraserShape = new EllipseStylusShape(boundsWidth, boundsWidth);
case 3:
k = 1.25;
break;
case 4:
k = 1.8;
break;
}
inkCanvas.EraserShape = new EllipseStylusShape(boundsWidth * k * eraserMultiplier,
boundsWidth * k * eraserMultiplier);
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint; inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
} } else {
else {
inkCanvas.EraserShape = new EllipseStylusShape(5, 5); inkCanvas.EraserShape = new EllipseStylusShape(5, 5);
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke; inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
} }
} } else {
else {
isLastTouchEraser = false; isLastTouchEraser = false;
inkCanvas.EraserShape = inkCanvas.EraserShape =
forcePointEraser ? new EllipseStylusShape(50, 50) : new EllipseStylusShape(5, 5); forcePointEraser ? new EllipseStylusShape(50, 50) : new EllipseStylusShape(5, 5);
@ -285,13 +267,10 @@ namespace Ink_Canvas {
} }
} }
private double GetTouchBoundWidth(TouchEventArgs e) { public double GetTouchBoundWidth(TouchEventArgs e) {
var args = e.GetTouchPoint(null).Bounds; var args = e.GetTouchPoint(null).Bounds;
double value; if (!Settings.Advanced.IsQuadIR) return args.Width;
if (!Settings.Advanced.IsQuadIR) value = args.Width; else return Math.Sqrt(args.Width * args.Height); //四边红外
else value = Math.Sqrt(args.Width * args.Height); //四边红外
if (Settings.Advanced.IsSpecialScreen) value *= Settings.Advanced.TouchMultiplier;
return value;
} }
//记录触摸设备ID //记录触摸设备ID
@ -303,7 +282,6 @@ namespace Ink_Canvas {
private bool isSingleFingerDragMode = false; private bool isSingleFingerDragMode = false;
private void inkCanvas_PreviewTouchDown(object sender, TouchEventArgs e) { private void inkCanvas_PreviewTouchDown(object sender, TouchEventArgs e) {
inkCanvas.CaptureTouch(e.TouchDevice); inkCanvas.CaptureTouch(e.TouchDevice);
ViewboxFloatingBar.IsHitTestVisible = false; ViewboxFloatingBar.IsHitTestVisible = false;
BlackboardUIGridForInkReplay.IsHitTestVisible = false; BlackboardUIGridForInkReplay.IsHitTestVisible = false;
@ -317,6 +295,7 @@ namespace Ink_Canvas {
//记录第一根手指点击时的 StrokeCollection //记录第一根手指点击时的 StrokeCollection
lastTouchDownStrokeCollection = inkCanvas.Strokes.Clone(); lastTouchDownStrokeCollection = inkCanvas.Strokes.Clone();
} }
//设备两个及两个以上,将画笔功能关闭 //设备两个及两个以上,将画笔功能关闭
if (dec.Count > 1 || isSingleFingerDragMode || !Settings.Gesture.IsEnableTwoFingerGesture) { if (dec.Count > 1 || isSingleFingerDragMode || !Settings.Gesture.IsEnableTwoFingerGesture) {
if (isInMultiTouchMode || !Settings.Gesture.IsEnableTwoFingerGesture) return; if (isInMultiTouchMode || !Settings.Gesture.IsEnableTwoFingerGesture) return;
@ -328,7 +307,6 @@ namespace Ink_Canvas {
} }
private void inkCanvas_PreviewTouchUp(object sender, TouchEventArgs e) { private void inkCanvas_PreviewTouchUp(object sender, TouchEventArgs e) {
inkCanvas.ReleaseAllTouchCaptures(); inkCanvas.ReleaseAllTouchCaptures();
ViewboxFloatingBar.IsHitTestVisible = true; ViewboxFloatingBar.IsHitTestVisible = true;
BlackboardUIGridForInkReplay.IsHitTestVisible = true; BlackboardUIGridForInkReplay.IsHitTestVisible = true;
@ -431,8 +409,7 @@ namespace Ink_Canvas {
} }
catch { } catch { }
} }
} } else {
else {
if (Settings.Gesture.IsEnableTwoFingerZoom) { if (Settings.Gesture.IsEnableTwoFingerZoom) {
foreach (var stroke in inkCanvas.Strokes) { foreach (var stroke in inkCanvas.Strokes) {
stroke.Transform(m, false); stroke.Transform(m, false);
@ -444,8 +421,7 @@ namespace Ink_Canvas {
} }
; ;
} } else {
else {
foreach (var stroke in inkCanvas.Strokes) stroke.Transform(m, false); foreach (var stroke in inkCanvas.Strokes) stroke.Transform(m, false);
; ;
} }

View File

@ -454,6 +454,18 @@ namespace Ink_Canvas
[JsonProperty("eraserBindTouchMultiplier")] [JsonProperty("eraserBindTouchMultiplier")]
public bool EraserBindTouchMultiplier { get; set; } = false; public bool EraserBindTouchMultiplier { get; set; } = false;
[JsonProperty("nibModeBoundsWidthThresholdValue")]
public double NibModeBoundsWidthThresholdValue { get; set; } = 2.5;
[JsonProperty("fingerModeBoundsWidthThresholdValue")]
public double FingerModeBoundsWidthThresholdValue { get; set; } = 2.5;
[JsonProperty("nibModeBoundsWidthEraserSize")]
public double NibModeBoundsWidthEraserSize { get; set; } = 0.8;
[JsonProperty("fingerModeBoundsWidthEraserSize")]
public double FingerModeBoundsWidthEraserSize { get; set; } = 0.8;
[JsonProperty("isLogEnabled")] [JsonProperty("isLogEnabled")]
public bool IsLogEnabled { get; set; } = true; public bool IsLogEnabled { get; set; } = true;