[update] 设置界面更新,还需要继续完善,其他一些小修复。背景面板下次commit再交吧
This commit is contained in:
parent
870440a6a2
commit
f9bf8db659
File diff suppressed because one or more lines are too long
@ -169,7 +169,7 @@ namespace Ink_Canvas {
|
||||
//加载设置
|
||||
LoadSettings(true);
|
||||
// HasNewUpdateWindow hasNewUpdateWindow = new HasNewUpdateWindow();
|
||||
if (Environment.Is64BitProcess) GroupBoxInkRecognition.Visibility = Visibility.Collapsed;
|
||||
if (Environment.Is64BitProcess) SettingsInkRecognitionGroupBox.Visibility = Visibility.Collapsed;
|
||||
|
||||
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;
|
||||
SystemEvents_UserPreferenceChanged(null, null);
|
||||
|
@ -282,14 +282,14 @@ namespace Ink_Canvas {
|
||||
AnimationsHelper.HideWithSlideAndFade(BoardBorderRightPageListView);
|
||||
|
||||
if (BorderSettings.Visibility == Visibility.Visible) {
|
||||
BorderSettingsMask.IsHitTestVisible = false;
|
||||
BorderSettingsMask.Background = null;
|
||||
SettingsOverlay.IsHitTestVisible = false;
|
||||
SettingsOverlay.Background = null;
|
||||
var sb = new Storyboard();
|
||||
|
||||
// 滑动动画
|
||||
var slideAnimation = new DoubleAnimation {
|
||||
From = 0, // 滑动距离
|
||||
To = BorderSettings.RenderTransform.Value.OffsetX - 440,
|
||||
To = BorderSettings.RenderTransform.Value.OffsetX - 490,
|
||||
Duration = TimeSpan.FromSeconds(0.6)
|
||||
};
|
||||
slideAnimation.EasingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut };
|
||||
@ -1575,14 +1575,14 @@ namespace Ink_Canvas {
|
||||
HideSubPanels();
|
||||
}
|
||||
else {
|
||||
BorderSettingsMask.IsHitTestVisible = true;
|
||||
BorderSettingsMask.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
||||
SettingsOverlay.IsHitTestVisible = true;
|
||||
SettingsOverlay.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToTop();
|
||||
var sb = new Storyboard();
|
||||
|
||||
// 滑动动画
|
||||
var slideAnimation = new DoubleAnimation {
|
||||
From = BorderSettings.RenderTransform.Value.OffsetX - 440, // 滑动距离
|
||||
From = BorderSettings.RenderTransform.Value.OffsetX - 490, // 滑动距离
|
||||
To = 0,
|
||||
Duration = TimeSpan.FromSeconds(0.6)
|
||||
};
|
||||
|
@ -219,8 +219,27 @@ namespace Ink_Canvas {
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EnableViewboxBlackBoardScaleTransform =
|
||||
ToggleSwitchEnableViewboxBlackBoardScaleTransform.IsOn;
|
||||
|
||||
if (Settings.Appearance.EnableViewboxBlackBoardScaleTransform) // 画板 UI 缩放 80%
|
||||
{
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleY = 0.8;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleY = 0.8;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleY = 0.8;
|
||||
}
|
||||
else
|
||||
{
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleY = 1;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleY = 1;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleY = 1;
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
public void ComboBoxFloatingBarImg_SelectionChanged(object sender, RoutedEventArgs e) {
|
||||
@ -277,7 +296,6 @@ namespace Ink_Canvas {
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableChickenSoupInWhiteboardMode_Toggled(object sender, RoutedEventArgs e) {
|
||||
@ -292,7 +310,6 @@ namespace Ink_Canvas {
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
//[Obsolete]
|
||||
@ -1014,11 +1031,11 @@ namespace Ink_Canvas {
|
||||
Settings.Automation.IsAutoFoldInPPTSlideShow = ToggleSwitchAutoFoldInPPTSlideShow.IsOn;
|
||||
if (Settings.Automation.IsAutoFoldInPPTSlideShow)
|
||||
{
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Visible;
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.IsOpen = true;
|
||||
SettingsShowCanvasAtNewSlideShowStackPanel.Opacity = 0.5;
|
||||
SettingsShowCanvasAtNewSlideShowStackPanel.IsHitTestVisible = false;
|
||||
} else {
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Collapsed;
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.IsOpen = false;
|
||||
SettingsShowCanvasAtNewSlideShowStackPanel.Opacity = 1;
|
||||
SettingsShowCanvasAtNewSlideShowStackPanel.IsHitTestVisible = true;
|
||||
}
|
||||
@ -1343,6 +1360,54 @@ namespace Ink_Canvas {
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchDisableGestureEraser_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Gesture.DisableGestureEraser = ToggleSwitchDisableGestureEraser.IsOn;
|
||||
if (Settings.Gesture.DisableGestureEraser) {
|
||||
GestureEraserSettingsItemsPanel.Opacity = 0.5;
|
||||
GestureEraserSettingsItemsPanel.IsHitTestVisible = false;
|
||||
SettingsGestureEraserDisabledBorder.IsOpen = true;
|
||||
} else {
|
||||
GestureEraserSettingsItemsPanel.Opacity = 1;
|
||||
GestureEraserSettingsItemsPanel.IsHitTestVisible = true;
|
||||
SettingsGestureEraserDisabledBorder.IsOpen = false;
|
||||
}
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ComboBoxDefaultMultiPointHandWriting_SelectionChanged(object sender, RoutedEventArgs e) {
|
||||
if (!isLoaded) return;
|
||||
Settings.Gesture.DefaultMultiPointHandWritingMode = ComboBoxDefaultMultiPointHandWriting.SelectedIndex;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchHideCursorWhenUsingTouchDevice_Toggled(object sender, RoutedEventArgs e) {
|
||||
if (!isLoaded) return;
|
||||
Settings.Gesture.HideCursorWhenUsingTouchDevice = ToggleSwitchHideCursorWhenUsingTouchDevice.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableMouseGesture_Toggled(object sender, RoutedEventArgs e) {
|
||||
if (!isLoaded) return;
|
||||
Settings.Gesture.EnableMouseGesture = ToggleSwitchEnableMouseGesture.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableMouseRightBtnGesture_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Gesture.EnableMouseRightBtnGesture = ToggleSwitchEnableMouseRightBtnGesture.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableMouseWheelGesture_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Gesture.EnableMouseWheelGesture = ToggleSwitchEnableMouseWheelGesture.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Reset
|
||||
@ -1451,6 +1516,12 @@ namespace Ink_Canvas {
|
||||
Settings.Gesture.IsEnableTwoFingerZoom = false;
|
||||
Settings.Gesture.IsEnableTwoFingerRotation = false;
|
||||
Settings.Gesture.IsEnableTwoFingerRotationOnSelection = false;
|
||||
Settings.Gesture.DisableGestureEraser = true;
|
||||
Settings.Gesture.DefaultMultiPointHandWritingMode = 2;
|
||||
Settings.Gesture.HideCursorWhenUsingTouchDevice = true;
|
||||
Settings.Gesture.EnableMouseGesture = true;
|
||||
Settings.Gesture.EnableMouseRightBtnGesture = true;
|
||||
Settings.Gesture.EnableMouseWheelGesture = true;
|
||||
|
||||
Settings.InkToShape.IsInkToShapeEnabled = true;
|
||||
Settings.InkToShape.IsInkToShapeNoFakePressureRectangle = false;
|
||||
@ -1648,6 +1719,13 @@ namespace Ink_Canvas {
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnsureFloatingBarVisibleInScreen_Toggled(object sender, RoutedEventArgs e) {
|
||||
if (!isLoaded) return;
|
||||
Settings.Advanced.IsEnableDPIChangeDetection = ToggleSwitchEnsureFloatingBarVisibleInScreen.IsOn;
|
||||
Settings.Advanced.IsEnableResolutionChangeDetection = ToggleSwitchEnsureFloatingBarVisibleInScreen.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region RandSettings
|
||||
@ -1674,6 +1752,179 @@ namespace Ink_Canvas {
|
||||
|
||||
#endregion
|
||||
|
||||
#region SettingsPane
|
||||
|
||||
public void SettingsPane_ScrollChanged(object sender, RoutedEventArgs e) {
|
||||
UpdateSettingsIndexSidebarDisplayStatus();
|
||||
}
|
||||
|
||||
public void UpdateSettingsIndexSidebarDisplayStatus() {
|
||||
|
||||
if (Math.Truncate(SettingsAboutGroupBox.MinHeight) != Math.Truncate(SettingsPanelScrollViewer.ActualHeight)) SettingsAboutGroupBox.MinHeight = SettingsPanelScrollViewer.ActualHeight;
|
||||
|
||||
SettingsStartupJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsStartupJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsCanvasJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsCanvasJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsGestureJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsGestureJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsInkRecognitionJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsInkRecognitionJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsAppearanceJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsAppearanceJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsPPTJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsPPTJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsAdvancedJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsAdvancedJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsAutomationJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsAutomationJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsRandWindowJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsRandWindowJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
SettingsAboutJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
|
||||
SettingsAboutJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
|
||||
|
||||
var SettingsStartupGroupBoxTransform = SettingsStartupGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsStartupGroupBoxTopPosition = SettingsStartupGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsStartupGroupBoxBottomPosition = SettingsStartupGroupBoxTransform.Transform(new Point(0, SettingsStartupGroupBox.ActualHeight));
|
||||
|
||||
var SettingsCanvasGroupBoxTransform = SettingsCanvasGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsCanvasGroupBoxTopPosition = SettingsCanvasGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsCanvasGroupBoxBottomPosition = SettingsCanvasGroupBoxTransform.Transform(new Point(0, SettingsCanvasGroupBox.ActualHeight));
|
||||
|
||||
var SettingsGestureGroupBoxTransform = SettingsGestureGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsGestureGroupBoxTopPosition = SettingsGestureGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsGestureGroupBoxBottomPosition = SettingsGestureGroupBoxTransform.Transform(new Point(0, SettingsGestureGroupBox.ActualHeight));
|
||||
|
||||
var SettingsInkRecognitionGroupBoxTransform = SettingsInkRecognitionGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsInkRecognitionGroupBoxTopPosition = SettingsInkRecognitionGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsInkRecognitionGroupBoxBottomPosition = SettingsInkRecognitionGroupBoxTransform.Transform(new Point(0, SettingsInkRecognitionGroupBox.ActualHeight));
|
||||
|
||||
var SettingsAppearanceGroupBoxTransform = SettingsAppearanceGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsAppearanceGroupBoxTopPosition = SettingsAppearanceGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsAppearanceGroupBoxBottomPosition = SettingsAppearanceGroupBoxTransform.Transform(new Point(0, SettingsAppearanceGroupBox.ActualHeight));
|
||||
|
||||
var SettingsPPTGroupBoxTransform = SettingsPPTGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsPPTGroupBoxTopPosition = SettingsPPTGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsPPTGroupBoxBottomPosition = SettingsPPTGroupBoxTransform.Transform(new Point(0, SettingsPPTGroupBox.ActualHeight));
|
||||
|
||||
var SettingsAdvancedGroupBoxTransform = SettingsAdvancedGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsAdvancedGroupBoxTopPosition = SettingsAdvancedGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsAdvancedGroupBoxBottomPosition = SettingsAdvancedGroupBoxTransform.Transform(new Point(0, SettingsAdvancedGroupBox.ActualHeight));
|
||||
|
||||
var SettingsAutomationGroupBoxTransform = SettingsAutomationGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsAutomationGroupBoxTopPosition = SettingsAutomationGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsAutomationGroupBoxBottomPosition = SettingsAutomationGroupBoxTransform.Transform(new Point(0, SettingsAutomationGroupBox.ActualHeight));
|
||||
|
||||
var SettingsRandWindowGroupBoxTransform = SettingsRandWindowGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var SettingsRandWindowGroupBoxTopPosition = SettingsRandWindowGroupBoxTransform.Transform(new Point(0, 0));
|
||||
var SettingsRandWindowGroupBoxBottomPosition = SettingsRandWindowGroupBoxTransform.Transform(new Point(0, SettingsRandWindowGroupBox.ActualHeight));
|
||||
|
||||
if (SettingsStartupGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight /2 && SettingsStartupGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsStartupJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsStartupJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsCanvasGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsCanvasGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsCanvasJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsCanvasJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsGestureGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsGestureGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsGestureJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsGestureJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsInkRecognitionGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsInkRecognitionGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsInkRecognitionJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsInkRecognitionJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsAppearanceGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsAppearanceGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsAppearanceJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsAppearanceJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsPPTGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsPPTGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsPPTJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsPPTJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsAdvancedGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight * 0.9 && SettingsAdvancedGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsAdvancedJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsAdvancedJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsAutomationGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight * 0.9 && SettingsAutomationGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsAutomationJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsAutomationJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else if (SettingsRandWindowGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight * 0.9 && SettingsRandWindowGroupBoxBottomPosition.Y > 50) {
|
||||
SettingsRandWindowJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsRandWindowJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
} else {
|
||||
SettingsAboutJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
|
||||
SettingsAboutJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
|
||||
}
|
||||
|
||||
Trace.WriteLine(SettingsRandWindowGroupBoxBottomPosition.Y);
|
||||
}
|
||||
|
||||
public void SettingsStartupJumpToGroupBox(object sender, MouseButtonEventArgs e) {
|
||||
var transform = SettingsStartupGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsCanvasJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsCanvasGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsGestureJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsGestureGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsInkRecognitionJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsInkRecognitionGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsAppearanceJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsAppearanceGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsPPTJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsPPTGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsAdvancedJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsAdvancedGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsAutomationJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsAutomationGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsRandWindowJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsRandWindowGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
public void SettingsAboutJumpToGroupBox(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var transform = SettingsAboutGroupBox.TransformToVisual(SettingsPanelScrollViewer);
|
||||
var position = transform.Transform(new Point(0, 0));
|
||||
SettingsPanelScrollViewer.ScrollToVerticalOffset(SettingsPanelScrollViewer.VerticalOffset + position.Y - 10);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public static void SaveSettingsToFile() {
|
||||
var text = JsonConvert.SerializeObject(Settings, Formatting.Indented);
|
||||
try {
|
||||
|
@ -3,6 +3,7 @@ using Ink_Canvas.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using OSVersionExtension;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@ -180,21 +181,21 @@ namespace Ink_Canvas {
|
||||
|
||||
if (Settings.Appearance.EnableViewboxBlackBoardScaleTransform) // 画板 UI 缩放 80%
|
||||
{
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleX = 0.8;
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleY = 0.8;
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleY = 0.8;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleY = 0.8;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleX = 0.8;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleY = 0.8;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleY = 0.8;
|
||||
|
||||
ToggleSwitchEnableViewboxBlackBoardScaleTransform.IsOn = true;
|
||||
} else {
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleX = 1;
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleY = 1;
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardLeftSideScaleTransform.ScaleY = 1;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleY = 1;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleX = 1;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleY = 1;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardRightSideScaleTransform.ScaleY = 1;
|
||||
|
||||
ToggleSwitchEnableViewboxBlackBoardScaleTransform.IsOn = false;
|
||||
}
|
||||
@ -383,20 +384,42 @@ namespace Ink_Canvas {
|
||||
ToggleSwitchEnableTwoFingerRotationOnSelection.IsOn =
|
||||
Settings.Gesture.IsEnableTwoFingerRotationOnSelection;
|
||||
|
||||
if (Settings.Gesture.AutoSwitchTwoFingerGesture) {
|
||||
if (Topmost) {
|
||||
ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
Settings.Gesture.IsEnableTwoFingerTranslate = false;
|
||||
if (!isInMultiTouchMode) ToggleSwitchEnableMultiTouchMode.IsOn = true;
|
||||
//if (Settings.Gesture.AutoSwitchTwoFingerGesture) {
|
||||
// if (Topmost) {
|
||||
// ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
// BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
// Settings.Gesture.IsEnableTwoFingerTranslate = false;
|
||||
// if (!isInMultiTouchMode) ToggleSwitchEnableMultiTouchMode.IsOn = true;
|
||||
// } else {
|
||||
// ToggleSwitchEnableTwoFingerTranslate.IsOn = true;
|
||||
// BoardToggleSwitchEnableTwoFingerTranslate.IsOn = true;
|
||||
// Settings.Gesture.IsEnableTwoFingerTranslate = true;
|
||||
// if (isInMultiTouchMode) ToggleSwitchEnableMultiTouchMode.IsOn = false;
|
||||
// }
|
||||
//}
|
||||
|
||||
ToggleSwitchDisableGestureEraser.IsOn = Settings.Gesture.DisableGestureEraser;
|
||||
|
||||
if (Settings.Gesture.DisableGestureEraser) {
|
||||
GestureEraserSettingsItemsPanel.Opacity = 0.5;
|
||||
GestureEraserSettingsItemsPanel.IsHitTestVisible = false;
|
||||
SettingsGestureEraserDisabledBorder.IsOpen = true;
|
||||
} else {
|
||||
ToggleSwitchEnableTwoFingerTranslate.IsOn = true;
|
||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = true;
|
||||
Settings.Gesture.IsEnableTwoFingerTranslate = true;
|
||||
if (isInMultiTouchMode) ToggleSwitchEnableMultiTouchMode.IsOn = false;
|
||||
GestureEraserSettingsItemsPanel.Opacity = 1;
|
||||
GestureEraserSettingsItemsPanel.IsHitTestVisible = true;
|
||||
SettingsGestureEraserDisabledBorder.IsOpen = false;
|
||||
}
|
||||
|
||||
ComboBoxDefaultMultiPointHandWriting.SelectedIndex = Settings.Gesture.DefaultMultiPointHandWritingMode;
|
||||
|
||||
if (Settings.Gesture.DefaultMultiPointHandWritingMode == 0) {
|
||||
ToggleSwitchEnableMultiTouchMode.IsOn = true;
|
||||
} else if (Settings.Gesture.DefaultMultiPointHandWritingMode == 1) {
|
||||
ToggleSwitchEnableMultiTouchMode.IsOn = false;
|
||||
}
|
||||
|
||||
ToggleSwitchHideCursorWhenUsingTouchDevice.IsOn = Settings.Gesture.HideCursorWhenUsingTouchDevice;
|
||||
|
||||
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||
} else {
|
||||
Settings.Gesture = new Gesture();
|
||||
@ -539,6 +562,9 @@ namespace Ink_Canvas {
|
||||
|
||||
ToggleSwitchIsEnableResolutionChangeDetection.IsOn =
|
||||
Settings.Advanced.IsEnableResolutionChangeDetection;
|
||||
|
||||
ToggleSwitchEnsureFloatingBarVisibleInScreen.IsOn = Settings.Advanced.IsEnableDPIChangeDetection &&
|
||||
Settings.Advanced.IsEnableResolutionChangeDetection;
|
||||
} else {
|
||||
Settings.Advanced = new Advanced();
|
||||
}
|
||||
@ -607,9 +633,9 @@ namespace Ink_Canvas {
|
||||
|
||||
ToggleSwitchAutoFoldInMaxHubWhiteboard.IsOn = Settings.Automation.IsAutoFoldInMaxHubWhiteboard;
|
||||
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Collapsed;
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.IsOpen = false;
|
||||
if (Settings.Automation.IsAutoFoldInPPTSlideShow) {
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.Visibility = Visibility.Visible;
|
||||
SettingsPPTInkingAndAutoFoldExplictBorder.IsOpen = true;
|
||||
SettingsShowCanvasAtNewSlideShowStackPanel.Opacity = 0.5;
|
||||
SettingsShowCanvasAtNewSlideShowStackPanel.IsHitTestVisible = false;
|
||||
}
|
||||
|
@ -1604,13 +1604,5 @@ namespace Ink_Canvas {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private void MainWindow_OnMouseMove(object sender, MouseEventArgs e) {
|
||||
if (e.StylusDevice == null) {
|
||||
System.Windows.Forms.Cursor.Show();
|
||||
} else {
|
||||
System.Windows.Forms.Cursor.Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
using Ink_Canvas.Helpers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
@ -40,6 +41,12 @@ namespace Ink_Canvas {
|
||||
}
|
||||
|
||||
private void MainWindow_TouchDown(object sender, TouchEventArgs e) {
|
||||
|
||||
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice) {
|
||||
System.Windows.Forms.Cursor.Hide();
|
||||
isCursorHidden = true;
|
||||
}
|
||||
|
||||
if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint
|
||||
|| inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke
|
||||
|| inkCanvas.EditingMode == InkCanvasEditingMode.Select) return;
|
||||
@ -49,6 +56,8 @@ namespace Ink_Canvas {
|
||||
HideSubPanels(); // 书写时自动隐藏二级菜单
|
||||
}
|
||||
|
||||
// 不禁用手势橡皮
|
||||
if (!Settings.Gesture.DisableGestureEraser) {
|
||||
double boundWidth = e.GetTouchPoint(null).Bounds.Width, eraserMultiplier = 1.0;
|
||||
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen)
|
||||
eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier;
|
||||
@ -83,8 +92,16 @@ namespace Ink_Canvas {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void MainWindow_StylusDown(object sender, StylusDownEventArgs e) {
|
||||
|
||||
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice && e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) {
|
||||
System.Windows.Forms.Cursor.Hide();
|
||||
isCursorHidden = true;
|
||||
}
|
||||
|
||||
|
||||
inkCanvas.CaptureStylus();
|
||||
ViewboxFloatingBar.IsHitTestVisible = false;
|
||||
BlackboardUIGridForInkReplay.IsHitTestVisible = false;
|
||||
@ -97,6 +114,7 @@ namespace Ink_Canvas {
|
||||
}
|
||||
|
||||
private async void MainWindow_StylusUp(object sender, StylusEventArgs e) {
|
||||
if (e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch) {
|
||||
try {
|
||||
inkCanvas.Strokes.Add(GetStrokeVisual(e.StylusDevice.Id).Stroke);
|
||||
await Task.Delay(5); // 避免渲染墨迹完成前预览墨迹被删除导致墨迹闪烁
|
||||
@ -108,6 +126,7 @@ namespace Ink_Canvas {
|
||||
catch (Exception ex) {
|
||||
Label.Content = ex.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
StrokeVisualList.Remove(e.StylusDevice.Id);
|
||||
@ -128,6 +147,15 @@ namespace Ink_Canvas {
|
||||
}
|
||||
|
||||
private void MainWindow_StylusMove(object sender, StylusEventArgs e) {
|
||||
|
||||
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice && e.StylusDevice.TabletDevice.Type == TabletDeviceType.Touch)
|
||||
{
|
||||
System.Windows.Forms.Cursor.Hide();
|
||||
isCursorHidden = true;
|
||||
}
|
||||
|
||||
Trace.WriteLine(e.Inverted);
|
||||
|
||||
try {
|
||||
if (GetTouchDownPointsList(e.StylusDevice.Id) != InkCanvasEditingMode.None) return;
|
||||
try {
|
||||
@ -173,6 +201,25 @@ namespace Ink_Canvas {
|
||||
|
||||
#endregion
|
||||
|
||||
#region Touch Pointer Hide
|
||||
|
||||
public bool isCursorHidden = false;
|
||||
|
||||
private void MainWindow_OnMouseMove(object sender, MouseEventArgs e) {
|
||||
if (e.StylusDevice == null) {
|
||||
if (isCursorHidden) {
|
||||
System.Windows.Forms.Cursor.Show();
|
||||
isCursorHidden = false;
|
||||
}
|
||||
} else if (e.StylusDevice.TabletDevice.Type == TabletDeviceType.Stylus) {
|
||||
if (isCursorHidden) {
|
||||
System.Windows.Forms.Cursor.Show();
|
||||
isCursorHidden = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private int lastTouchDownTime = 0, lastTouchUpTime = 0;
|
||||
|
||||
@ -182,6 +229,12 @@ namespace Ink_Canvas {
|
||||
|
||||
private void Main_Grid_TouchDown(object sender, TouchEventArgs e) {
|
||||
|
||||
if (!isCursorHidden && Settings.Gesture.HideCursorWhenUsingTouchDevice)
|
||||
{
|
||||
System.Windows.Forms.Cursor.Hide();
|
||||
isCursorHidden = true;
|
||||
}
|
||||
|
||||
inkCanvas.CaptureTouch(e.TouchDevice);
|
||||
ViewboxFloatingBar.IsHitTestVisible = false;
|
||||
BlackboardUIGridForInkReplay.IsHitTestVisible = false;
|
||||
@ -194,6 +247,8 @@ namespace Ink_Canvas {
|
||||
if (NeedUpdateIniP()) iniP = e.GetTouchPoint(inkCanvas).Position;
|
||||
if (drawingShapeMode == 9 && isFirstTouchCuboid == false) MouseTouchMove(iniP);
|
||||
inkCanvas.Opacity = 1;
|
||||
|
||||
if (!Settings.Gesture.DisableGestureEraser) {
|
||||
double boundsWidth = GetTouchBoundWidth(e), eraserMultiplier = 1.0;
|
||||
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen)
|
||||
eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier;
|
||||
@ -242,6 +297,7 @@ namespace Ink_Canvas {
|
||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private double GetTouchBoundWidth(TouchEventArgs e) {
|
||||
var args = e.GetTouchPoint(null).Bounds;
|
||||
@ -318,8 +374,7 @@ namespace Ink_Canvas {
|
||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||
}
|
||||
|
||||
// -- removed --
|
||||
//
|
||||
|
||||
//private void inkCanvas_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
|
||||
//{
|
||||
// if (isInMultiTouchMode || !Settings.Gesture.IsEnableTwoFingerGesture || inkCanvas.Strokes.Count == 0 || dec.Count() < 2) return;
|
||||
|
@ -81,6 +81,18 @@ namespace Ink_Canvas
|
||||
public bool IsEnableTwoFingerRotation { get; set; } = false;
|
||||
[JsonProperty("isEnableTwoFingerRotationOnSelection")]
|
||||
public bool IsEnableTwoFingerRotationOnSelection { get; set; } = false;
|
||||
[JsonProperty("disableGestureEraser")]
|
||||
public bool DisableGestureEraser { get; set; } = true;
|
||||
[JsonProperty("defaultMultiPointHandWritingMode")]
|
||||
public int DefaultMultiPointHandWritingMode { get; set; } = 2;
|
||||
[JsonProperty("hideCursorWhenUsingTouchDevice")]
|
||||
public bool HideCursorWhenUsingTouchDevice { get; set; } = true;
|
||||
[JsonProperty("enableMouseGesture")]
|
||||
public bool EnableMouseGesture { get; set; } = true;
|
||||
[JsonProperty("enableMouseRightBtnGesture")]
|
||||
public bool EnableMouseRightBtnGesture { get; set; } = true;
|
||||
[JsonProperty("enableMouseWheelGesture")]
|
||||
public bool EnableMouseWheelGesture { get; set; } = true;
|
||||
}
|
||||
|
||||
public class Startup
|
||||
|
14
InkCanvasForClassX/InkCanvasForClassX.csproj.user
Normal file
14
InkCanvasForClassX/InkCanvasForClassX.csproj.user
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<Compile Update="Libraries\InkCanvas.xaml.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Update="Libraries\InkCanvas.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
</Project>
|
12
InkCanvasForClassX/Libraries/InkCanvas.xaml
Normal file
12
InkCanvasForClassX/Libraries/InkCanvas.xaml
Normal file
@ -0,0 +1,12 @@
|
||||
<UserControl x:Class="InkCanvasForClassX.Libraries.InkCanvas"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:InkCanvasForClassX.Libraries"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<Grid Background="Red">
|
||||
<local:InkProjector x:Name="inkProjector" Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=ActualWidth}" Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=ActualHeight}" Margin="0,0,0,0"/>
|
||||
</Grid>
|
||||
</UserControl>
|
68
InkCanvasForClassX/Libraries/InkCanvas.xaml.cs
Normal file
68
InkCanvasForClassX/Libraries/InkCanvas.xaml.cs
Normal file
@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Ink;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace InkCanvasForClassX.Libraries
|
||||
{
|
||||
public partial class InkCanvas : UserControl
|
||||
{
|
||||
|
||||
public static readonly DependencyProperty InkStrokesProperty =
|
||||
DependencyProperty.Register(
|
||||
name: "InkStrokes",
|
||||
propertyType: typeof(StrokeCollection),
|
||||
ownerType: typeof(InkCanvas),
|
||||
typeMetadata: new FrameworkPropertyMetadata(
|
||||
defaultValue: new StrokeCollection(),
|
||||
propertyChangedCallback: new PropertyChangedCallback(OnInkStrokesChanged))
|
||||
);
|
||||
|
||||
public StrokeCollection InkStrokes {
|
||||
get => (StrokeCollection)GetValue(InkStrokesProperty);
|
||||
set {
|
||||
Trace.WriteLine("Set InkStrokes");
|
||||
SetValue(InkStrokesProperty, value);
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnInkStrokesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("Update");
|
||||
var control = (InkCanvas)d;
|
||||
if (e.OldValue is StrokeCollection oldStrokes) {
|
||||
oldStrokes.StrokesChanged -= control.OnStrokesChanged;
|
||||
}
|
||||
|
||||
if (e.NewValue is StrokeCollection newStrokes) {
|
||||
newStrokes.StrokesChanged += control.OnStrokesChanged;
|
||||
control.inkProjector.Strokes = newStrokes;
|
||||
}
|
||||
}
|
||||
private void OnStrokesChanged(object sender, StrokeCollectionChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("Strokes Collection Changed");
|
||||
// Ensure that the InkStrokes dependency property updates
|
||||
SetValue(InkStrokesProperty, sender as StrokeCollection);
|
||||
inkProjector.Strokes = sender as StrokeCollection;
|
||||
}
|
||||
|
||||
public InkCanvas()
|
||||
{
|
||||
InitializeComponent();
|
||||
InkStrokes.StrokesChanged += OnStrokesChanged;
|
||||
}
|
||||
}
|
||||
}
|
@ -8,7 +8,8 @@
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="1300" Width="1300">
|
||||
<Grid>
|
||||
<libraries:InkProjector Width="600" Height="600" x:Name="InkP" Margin="0,0,0,600"/>
|
||||
<libraries:InkCanvas x:Name="inkCanvas" Width="600" Height="600" Margin="0,0,0,600"/>
|
||||
<!--<libraries:InkCanvas InkStrokes="{Binding ElementName=InkC, Path=Strokes}" x:Name="inkCanvas" Width="600" Height="600" Margin="0,0,0,600"/>-->
|
||||
<InkCanvas Height="600" Width="600" Name="InkC" Margin="0,600,0,0" Background="Wheat"></InkCanvas>
|
||||
<StackPanel>
|
||||
<Button Click="ButtonBase1_OnClick">Change to None</Button>
|
||||
|
@ -51,38 +51,38 @@ namespace InkCanvasForClassX
|
||||
{
|
||||
InitializeComponent();
|
||||
InkC.StrokeCollected += (object sender, InkCanvasStrokeCollectedEventArgs e) => {
|
||||
InkP.Strokes = InkC.Strokes;
|
||||
var stylusPtsList = new List<PerfectFreehandJint.StylusPointLite>();
|
||||
foreach (var strokeStylusPoint in e.Stroke.StylusPoints) {
|
||||
stylusPtsList.Add(new PerfectFreehandJint.StylusPointLite()
|
||||
{
|
||||
x = Math.Round(strokeStylusPoint.X,2) ,
|
||||
y = Math.Round(strokeStylusPoint.Y,2),
|
||||
pressure = strokeStylusPoint.PressureFactor,
|
||||
});
|
||||
}
|
||||
var aaa = new PerfectFreehandJint();
|
||||
var ccc = aaa.GetSVGPathStroke(stylusPtsList.ToArray(), new PerfectFreehandJint.StrokeOptions() {
|
||||
size = 16,
|
||||
thinning = 0.5,
|
||||
smoothing = 0.5,
|
||||
streamline = 0.5,
|
||||
simulatePressure = true,
|
||||
easing = (t)=>t,
|
||||
last = true,
|
||||
start = new PerfectFreehandJint.StrokeCapOptions() {
|
||||
cap = true,
|
||||
taper = 0,
|
||||
easing = (t)=>t,
|
||||
},
|
||||
end = new PerfectFreehandJint.StrokeCapOptions()
|
||||
{
|
||||
cap = true,
|
||||
taper = 0,
|
||||
easing = (t) => t,
|
||||
},
|
||||
});
|
||||
Trace.WriteLine(ccc);
|
||||
inkCanvas.InkStrokes = InkC.Strokes;
|
||||
//var stylusPtsList = new List<PerfectFreehandJint.StylusPointLite>();
|
||||
//foreach (var strokeStylusPoint in e.Stroke.StylusPoints) {
|
||||
// stylusPtsList.Add(new PerfectFreehandJint.StylusPointLite()
|
||||
// {
|
||||
// x = Math.Round(strokeStylusPoint.X,2) ,
|
||||
// y = Math.Round(strokeStylusPoint.Y,2),
|
||||
// pressure = strokeStylusPoint.PressureFactor,
|
||||
// });
|
||||
//}
|
||||
//var aaa = new PerfectFreehandJint();
|
||||
//var ccc = aaa.GetSVGPathStroke(stylusPtsList.ToArray(), new PerfectFreehandJint.StrokeOptions() {
|
||||
// size = 16,
|
||||
// thinning = 0.5,
|
||||
// smoothing = 0.5,
|
||||
// streamline = 0.5,
|
||||
// simulatePressure = true,
|
||||
// easing = (t)=>t,
|
||||
// last = true,
|
||||
// start = new PerfectFreehandJint.StrokeCapOptions() {
|
||||
// cap = true,
|
||||
// taper = 0,
|
||||
// easing = (t)=>t,
|
||||
// },
|
||||
// end = new PerfectFreehandJint.StrokeCapOptions()
|
||||
// {
|
||||
// cap = true,
|
||||
// taper = 0,
|
||||
// easing = (t) => t,
|
||||
// },
|
||||
//});
|
||||
//Trace.WriteLine(ccc);
|
||||
};
|
||||
|
||||
InkC.MouseRightButtonDown += Inkcanv_MouseRightButtonDown;
|
||||
@ -135,7 +135,7 @@ namespace InkCanvasForClassX
|
||||
{
|
||||
stroke.Transform(new Matrix(1, 0, 0, 1, delta.X, delta.Y), false);
|
||||
}
|
||||
InkP.Strokes = InkC.Strokes;
|
||||
inkCanvas.InkStrokes = InkC.Strokes;
|
||||
|
||||
startPoint = currentPoint;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user