Merge pull request #59 from Raspberry-Monster/master
[SpecialScreen] 支持调整屏幕触摸缩放倍数
This commit is contained in:
commit
414f586da0
@ -475,8 +475,24 @@
|
||||
</GroupBox>
|
||||
<GroupBox Header="高级">
|
||||
<ui:SimpleStackPanel Spacing="12">
|
||||
<TextBlock Text="可在手指触摸画板时显示圆形橡皮或手掌触摸画板时显示的橡皮比
手掌大很多时开启" Foreground="#666666"/>
|
||||
<ui:ToggleSwitch Name="ToggleSwitchIsSpecialScreen" Header="特殊屏幕模式" FontFamily="Microsoft YaHei UI" OnContent="开" OffContent="关" Toggled="ToggleSwitchIsSpecialScreen_Toggled"/>
|
||||
<TextBlock Text="可在手指触摸画板时显示圆形橡皮或手掌触摸画板时显示的橡皮比
手掌大很多时调整" 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>
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
@ -3022,11 +3035,26 @@ namespace Ink_Canvas
|
||||
#endregion
|
||||
|
||||
#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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user