Skip to content

Commit

Permalink
Add long press support for some drawing controls and release new version
Browse files Browse the repository at this point in the history
  • Loading branch information
WXRIW committed Nov 27, 2022
1 parent a45ad96 commit 111e3c4
Show file tree
Hide file tree
Showing 3 changed files with 150 additions and 38 deletions.
17 changes: 10 additions & 7 deletions Ink Canvas/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -881,8 +881,11 @@
CornerRadius="8" Margin="-100,-265,-100,30" Height="240">
<Viewbox Margin="0,0,0,2">
<ui:SimpleStackPanel Spacing="-8" Orientation="Vertical">
<Label Content="图形" FontSize="16" Foreground="#666666"
HorizontalAlignment="Left" Margin="10,8"/>
<TextBlock FontSize="16" Foreground="#666666"
HorizontalAlignment="Left" Margin="10,8">
<Run Text="图形"/>
<Run Text="(第一行支持长按保持选中)" FontSize="10"/>
</TextBlock>
<ui:SymbolIcon Margin="0,-20,8,15" Symbol="Pin" MouseDown="Border_MouseDown" MouseUp="SymbolIconPinBorderDrawShape_MouseUp" Foreground="#666666" HorizontalAlignment="Right"/>
<ui:SimpleStackPanel Margin="20,0,0,0" Orientation="Horizontal">
<ui:SimpleStackPanel Visibility="Collapsed" Margin="58,6,5,6" Width="54">
Expand All @@ -893,11 +896,11 @@
</ui:SimpleStackPanel>
</ui:SimpleStackPanel>
<ui:SimpleStackPanel Height="50" Spacing="14" Orientation="Horizontal">
<Image Margin="16,12,0,12" MouseUp="BtnDrawLine_Click" Source="{DynamicResource DrawShapeImageSource.Line}"/>
<Image Margin="0,12,0,12" MouseUp="BtnDrawDashedLine_Click" Source="{DynamicResource DrawShapeImageSource.DashedLine}"/>
<Image Margin="0,12,0,12" MouseUp="BtnDrawDotLine_Click" Source="{DynamicResource DrawShapeImageSource.DotLine}"/>
<Image Margin="0,12,0,12" MouseUp="BtnDrawArrow_Click" Source="{DynamicResource DrawShapeImageSource.ArrowLine}"/>
<Image Margin="0,11.5,16,11.5" MouseUp="BtnDrawParallelLine_Click" Source="{DynamicResource DrawShapeImageSource.ParallelLine}"/>
<Image Name="ImageDrawLine" Margin="16,12,0,12" MouseDown="Image_MouseDown" MouseUp="BtnDrawLine_Click" Source="{DynamicResource DrawShapeImageSource.Line}"/>
<Image Name="ImageDrawDashedLine" Margin="0,12,0,12" MouseDown="Image_MouseDown" MouseUp="BtnDrawDashedLine_Click" Source="{DynamicResource DrawShapeImageSource.DashedLine}"/>
<Image Name="ImageDrawDotLine" Margin="0,12,0,12" MouseDown="Image_MouseDown" MouseUp="BtnDrawDotLine_Click" Source="{DynamicResource DrawShapeImageSource.DotLine}"/>
<Image Name="ImageDrawArrow" Margin="0,12,0,12" MouseDown="Image_MouseDown" MouseUp="BtnDrawArrow_Click" Source="{DynamicResource DrawShapeImageSource.ArrowLine}"/>
<Image Name="ImageDrawParallelLine" Margin="0,11.5,16,11.5" MouseDown="Image_MouseDown" MouseUp="BtnDrawParallelLine_Click" Source="{DynamicResource DrawShapeImageSource.ParallelLine}"/>
</ui:SimpleStackPanel>
<ui:SimpleStackPanel Height="50" Spacing="15" Orientation="Horizontal">
<Image Margin="16,12,0,12" MouseUp="BtnDrawCoordinate1_Click" Source="{DynamicResource DrawShapeImageSource.Coordinate1}"/>
Expand Down
167 changes: 138 additions & 29 deletions Ink Canvas/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ private void KeyExit(object sender, ExecutedRoutedEventArgs e)
public static Settings Settings = new Settings();
public static string settingsFileName = "Settings.json";
bool isLoaded = false;
bool isAutoUpdateEnabled = false;
//bool isAutoUpdateEnabled = false;

private void Window_Loaded(object sender, RoutedEventArgs e)
{
Expand All @@ -299,7 +299,7 @@ private void Window_Loaded(object sender, RoutedEventArgs e)
string response = GetWebClient(Url);
if (response.Contains("Special Version"))
{
isAutoUpdateEnabled = true;
//isAutoUpdateEnabled = true;
if (response.Contains("<notice>"))
{
Expand Down Expand Up @@ -836,11 +836,12 @@ private void CancelSingleFingerDragMode()
BorderDrawShape.Visibility = Visibility.Collapsed;
}
GridInkCanvasSelectionCover.Visibility = Visibility.Collapsed;
Label.Content = "isSingleFingerDragMode=" + isSingleFingerDragMode.ToString();
//Label.Content = "isSingleFingerDragMode=" + isSingleFingerDragMode.ToString();
if (isSingleFingerDragMode)
{
BtnFingerDragMode_Click(BtnFingerDragMode, null);
}
isLongPressSelected = false;
}

private void BtnHideControl_Click(object sender, RoutedEventArgs e)
Expand Down Expand Up @@ -1221,6 +1222,8 @@ private void ColorSwitchCheck()
forceEraser = false;
}

isLongPressSelected = false;

// 改变选中提示
ViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
ViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed;
Expand Down Expand Up @@ -3207,6 +3210,7 @@ private void ImageDrawShape_MouseUp(object sender, MouseButtonEventArgs e)
#endregion Floating Bar Control

int drawingShapeMode = 0;
bool isLongPressSelected = false; // 用于存是否是“选中”状态,便于后期抬笔后不做切换到笔的处理

#region Buttons

Expand All @@ -3226,58 +3230,156 @@ private void SymbolIconPinBorderDrawShape_MouseUp(object sender, MouseButtonEven
}
}

object lastMouseDownSender = null;
DateTime lastMouseDownTime = DateTime.MinValue;

private async void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
lastMouseDownSender = sender;
lastMouseDownTime = DateTime.Now;

await Task.Delay(500);

if (lastMouseDownSender == sender)
{
lastMouseDownSender = null;
var dA = new DoubleAnimation(1, 0.3, new Duration(TimeSpan.FromMilliseconds(100)));
((UIElement)sender).BeginAnimation(OpacityProperty, dA);

forceEraser = true;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
if (sender == ImageDrawLine)
{
drawingShapeMode = 1;
}
else if (sender == ImageDrawDashedLine)
{
drawingShapeMode = 8;
}
else if (sender == ImageDrawDotLine)
{
drawingShapeMode = 18;
}
else if (sender == ImageDrawArrow)
{
drawingShapeMode = 2;
}
else if (sender == ImageDrawParallelLine)
{
drawingShapeMode = 15;
}
isLongPressSelected = true;
if (isSingleFingerDragMode)
{
BtnFingerDragMode_Click(BtnFingerDragMode, null);
}
}
}

private void BtnPen_Click(object sender, RoutedEventArgs e)
{
forceEraser = false;
drawingShapeMode = 0;
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
isLongPressSelected = false;
}

private void BtnDrawLine_Click(object sender, EventArgs e)
{
forceEraser = true;
drawingShapeMode = 1;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
if (lastMouseDownSender == sender)
{
forceEraser = true;
drawingShapeMode = 1;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
}
lastMouseDownSender = null;
if (isLongPressSelected)
{
BorderDrawShape.Visibility = Visibility.Collapsed;
var dA = new DoubleAnimation(1, 1, new Duration(TimeSpan.FromMilliseconds(0)));
ImageDrawLine.BeginAnimation(OpacityProperty, dA);
}
}

private void BtnDrawDashedLine_Click(object sender, EventArgs e)
{
forceEraser = true;
drawingShapeMode = 8;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
if (lastMouseDownSender == sender)
{
forceEraser = true;
drawingShapeMode = 8;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
}
lastMouseDownSender = null;
if (isLongPressSelected)
{
BorderDrawShape.Visibility = Visibility.Collapsed;
var dA = new DoubleAnimation(1, 1, new Duration(TimeSpan.FromMilliseconds(0)));
ImageDrawDashedLine.BeginAnimation(OpacityProperty, dA);
}
}

private void BtnDrawDotLine_Click(object sender, EventArgs e)
{
forceEraser = true;
drawingShapeMode = 18;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
if (lastMouseDownSender == sender)
{
forceEraser = true;
drawingShapeMode = 18;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
}
lastMouseDownSender = null;
if (isLongPressSelected)
{
BorderDrawShape.Visibility = Visibility.Collapsed;
var dA = new DoubleAnimation(1, 1, new Duration(TimeSpan.FromMilliseconds(0)));
ImageDrawDotLine.BeginAnimation(OpacityProperty, dA);
}
}

private void BtnDrawArrow_Click(object sender, EventArgs e)
{
forceEraser = true;
drawingShapeMode = 2;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
if (lastMouseDownSender == sender)
{
forceEraser = true;
drawingShapeMode = 2;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
}
lastMouseDownSender = null;
if (isLongPressSelected)
{
BorderDrawShape.Visibility = Visibility.Collapsed;
var dA = new DoubleAnimation(1, 1, new Duration(TimeSpan.FromMilliseconds(0)));
ImageDrawArrow.BeginAnimation(OpacityProperty, dA);
}
}

private void BtnDrawParallelLine_Click(object sender, EventArgs e)
{
forceEraser = true;
drawingShapeMode = 15;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
if (lastMouseDownSender == sender)
{
forceEraser = true;
drawingShapeMode = 15;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
CancelSingleFingerDragMode();
}
lastMouseDownSender = null;
if (isLongPressSelected)
{
BorderDrawShape.Visibility = Visibility.Collapsed;
var dA = new DoubleAnimation(1, 1, new Duration(TimeSpan.FromMilliseconds(0)));
ImageDrawParallelLine.BeginAnimation(OpacityProperty, dA);
}
}

private void BtnDrawCoordinate1_Click(object sender, EventArgs e)
Expand Down Expand Up @@ -4432,7 +4534,14 @@ private void inkCanvas_MouseUp(object sender, MouseButtonEventArgs e)
lastTempStrokeCollection = null;
if (drawingShapeMode != 9 && drawingShapeMode != 0 && drawingShapeMode != 24 && drawingShapeMode != 25)
{
BtnPen_Click(null, null); //画完一次还原到笔模式
if (isLongPressSelected)
{

}
else
{
BtnPen_Click(null, null); //画完一次还原到笔模式
}
}
if (drawingShapeMode == 9)
{
Expand Down
4 changes: 2 additions & 2 deletions Ink Canvas/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.4.0.0")]
[assembly: AssemblyFileVersion("3.4.0.0")]
[assembly: AssemblyVersion("3.5.0.0")]
[assembly: AssemblyFileVersion("3.5.0.0")]

0 comments on commit 111e3c4

Please sign in to comment.