Merge pull request #59 from Raspberry-Monster/master

[SpecialScreen] 支持调整屏幕触摸缩放倍数
This commit is contained in:
Raspberry Kan 2023-04-20 10:27:38 +08:00 committed by GitHub
commit 414f586da0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 18 deletions

View File

@ -475,8 +475,24 @@
</GroupBox>
<GroupBox Header="高级">
<ui:SimpleStackPanel Spacing="12">
<TextBlock Text="可在手指触摸画板时显示圆形橡皮或手掌触摸画板时显示的橡皮比&#x000A;手掌大很多时开启" Foreground="#666666"/>
<ui:ToggleSwitch Name="ToggleSwitchIsSpecialScreen" Header="特殊屏幕模式" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchIsSpecialScreen_Toggled"/>
<TextBlock Text="可在手指触摸画板时显示圆形橡皮或手掌触摸画板时显示的橡皮比&#x000A;手掌大很多时调整" Foreground="#666666"/>
<ui:ToggleSwitch Name="ToggleSwitchIsSpecialScreen" Header="特殊屏幕模式" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchIsSpecialScreen_OnToggled"/>
<StackPanel Orientation="Horizontal">
<Slider x:Name="TouchMultiplierSlider"
HorizontalAlignment="Left"
Minimum="0" Maximum="1"
Width="300" FontFamily="Microsoft YaHei UI"
ui:ControlHelper.Header="触摸大小倍数"
IsSnapToTickEnabled="True"
TickFrequency="0.05" TickPlacement="Both"
ValueChanged="TouchMultiplierSlider_ValueChanged"
Visibility="Collapsed"/>
<TextBlock Text="{Binding Value, ElementName=TouchMultiplierSlider, Mode=OneWay}"
VerticalAlignment="Bottom" Margin="10,0,0,8"
FontSize="14" Width="30" HorizontalAlignment="Center"
Visibility="{Binding Path=Visibility, ElementName=TouchMultiplierSlider, Mode=OneWay}"/>
</StackPanel>
<ui:ToggleSwitch Name="ToggleSwitchEraserBindTouchMultiplier" Header="橡皮擦绑定触摸大小倍数" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" IsOn="False" Toggled="ToggleSwitchEraserBindTouchMultiplier_Toggled" Visibility="{Binding Path=Visibility, ElementName=TouchMultiplierSlider, Mode=OneWay}"/>
<ui:ToggleSwitch Name="ToggleSwitchIsLogEnabled" Header="记录日志" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" IsOn="True" Toggled="ToggleSwitchIsLogEnabled_Toggled"/>
</ui:SimpleStackPanel>
</GroupBox>
@ -535,7 +551,7 @@
<Bold>开发者:</Bold> XY Wang (WXRIW)
</TextBlock>
<TextBlock FontSize="14">
<Bold>贡献者:</Bold> Kengwang, jiajiaxd, CN-Ironegg
<Bold>贡献者:</Bold> Kengwang, jiajiaxd, CN-Ironegg, Raspberry Kan
</TextBlock>
<TextBlock FontSize="14">
<Bold>开源地址:</Bold>

View File

@ -813,14 +813,7 @@ namespace Ink_Canvas
if (Settings.Advanced != null)
{
if (Settings.Advanced.IsSpecialScreen)
{
ToggleSwitchIsSpecialScreen.IsOn = true;
}
else
{
ToggleSwitchIsSpecialScreen.IsOn = false;
}
TouchMultiplierSlider.Value=Settings.Advanced.TouchMultiplier;
if (Settings.Advanced.IsLogEnabled)
{
ToggleSwitchIsLogEnabled.IsOn = true;
@ -829,6 +822,24 @@ namespace Ink_Canvas
{
ToggleSwitchIsLogEnabled.IsOn = false;
}
if (Settings.Advanced.EraserBindTouchMultiplier)
{
ToggleSwitchEraserBindTouchMultiplier.IsOn = true;
}
else
{
ToggleSwitchEraserBindTouchMultiplier.IsOn = false;
}
if (Settings.Advanced.IsSpecialScreen)
{
ToggleSwitchIsSpecialScreen.IsOn = true;
}
else
{
ToggleSwitchIsSpecialScreen.IsOn = false;
}
TouchMultiplierSlider.Visibility = ToggleSwitchIsSpecialScreen.IsOn ? Visibility.Visible : Visibility.Collapsed;
}
else
{
@ -1711,8 +1722,9 @@ namespace Ink_Canvas
MouseTouchMove(iniP);
}
inkCanvas.Opacity = 1;
double boundsWidth = GetTouchBoundWidth(e);
var eraserMultiplier = 1d;
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen) eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier;
if (boundsWidth > BoundsWidth)
{
isLastTouchEraser = true;
@ -1735,7 +1747,7 @@ namespace Ink_Canvas
k = 1.8;
break;
}
inkCanvas.EraserShape = new EllipseStylusShape(boundsWidth * 1.5 * k, boundsWidth * 1.5 * k);
inkCanvas.EraserShape = new EllipseStylusShape(boundsWidth * 1.5 * k * eraserMultiplier, boundsWidth * 1.5 * k * eraserMultiplier);
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
}
else
@ -1766,8 +1778,9 @@ namespace Ink_Canvas
public double GetTouchBoundWidth(TouchEventArgs e)
{
double value = e.GetTouchPoint(null).Bounds.Width;
if (Settings.Advanced.IsSpecialScreen) value /= 3.75;
var args = e.GetTouchPoint(null).Bounds;
double value = args.Width;
if (Settings.Advanced.IsSpecialScreen) value *= Settings.Advanced.TouchMultiplier;
return value;
}
@ -3023,10 +3036,25 @@ namespace Ink_Canvas
#region Advanced
private void ToggleSwitchIsSpecialScreen_Toggled(object sender, RoutedEventArgs e)
private void ToggleSwitchIsSpecialScreen_OnToggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.Advanced.IsSpecialScreen = ToggleSwitchIsSpecialScreen.IsOn;
TouchMultiplierSlider.Visibility = ToggleSwitchIsSpecialScreen.IsOn ? Visibility.Visible : Visibility.Collapsed;
SaveSettingsToFile();
}
private void TouchMultiplierSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (!isLoaded) return;
Settings.Advanced.TouchMultiplier = e.NewValue;
SaveSettingsToFile();
}
private void ToggleSwitchEraserBindTouchMultiplier_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.Advanced.EraserBindTouchMultiplier= ToggleSwitchEraserBindTouchMultiplier.IsOn;
SaveSettingsToFile();
}
@ -6477,7 +6505,6 @@ namespace Ink_Canvas
#endregion
}
#region Test for pen

View File

@ -120,6 +120,10 @@ namespace Ink_Canvas
{
[JsonProperty("isSpecialScreen")]
public bool IsSpecialScreen { get; set; } = false;
[JsonProperty("touchMultiplier")]
public double TouchMultiplier { get; set; } = 0.25;
[JsonProperty("eraserBindTouchMultiplier")]
public bool EraserBindTouchMultiplier { get; set; } = false;
[JsonProperty("isLogEnabled")]
public bool IsLogEnabled { get; set; } = true;
}