More functions

This commit is contained in:
XY Wang 2021-09-11 01:23:03 +08:00
parent 0da7c2a0e0
commit 941525025e
3 changed files with 273 additions and 116 deletions

View File

@ -122,15 +122,6 @@
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="Office">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>99</VersionMajor>
<VersionMinor>1</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="stdole">
<Guid>{00020430-0000-0000-C000-000000000046}</Guid>
<VersionMajor>2</VersionMajor>

View File

@ -27,16 +27,34 @@
Executed="KeyExit"/>
</Window.CommandBindings>
<Grid x:Name="Main_Grid" Background="#01FFFFFF" TouchDown="Main_Grid_TouchDown">
<Grid Name="GridBackgroundCover" Background="Transparent"/>
<Grid Name="GridBackgroundCoverHolder">
<Grid Name="GridBackgroundCover" Visibility="Hidden" Background="#FFF2F2F2"/>
</Grid>
<Label Name="Label" Visibility="Collapsed" Content="0"/>
<InkCanvas Name="inkCanvas" Background="Transparent"></InkCanvas>
<StackPanel Name="StackPanelMain" Margin="10,0,10,50"
HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="50">
<InkCanvas Name="inkCanvas" Background="Transparent">
<!--<InkCanvas.DefaultDrawingAttributes>
<DrawingAttributes StylusTip="Ellipse" Height="8" Width="4" IgnorePressure="False" FitToCurve="True" >
<DrawingAttributes.StylusTipTransform>
<Matrix M11="1" M12="1.5" M21="2.2" M22="1"/>
</DrawingAttributes.StylusTipTransform>
</DrawingAttributes>
</InkCanvas.DefaultDrawingAttributes>-->
</InkCanvas>
<StackPanel Name="StackPanelMain" Margin="10,0,10,55"
HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="46">
<StackPanel Name="StackPanelControl">
<Button Name="BtnExit" Content="退出" FontFamily="Microsoft YaHei UI"
Margin="0,0,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnExit_Click" Foreground="Black" Background="#7F909090"/>
<TextBlock Text="老魏&#x000A;模式" Margin="0,10,0,0"
<TextBlock Text="自动&#x000A;粗细" Margin="0,10,0,0"
FontSize="14" HorizontalAlignment="Center"
Foreground="{Binding ElementName=BtnExit, Path=Foreground}"/>
<Viewbox Height="30">
<ui:ToggleSwitch Name="ToggleSwitchAutoWeight" Header="" Width="40.5"
FontFamily="Microsoft YaHei UI" FontSize="19"
OnContent="" OffContent="" Toggled="ToggleSwitchAutoWeight_Toggled"/>
</Viewbox>
<TextBlock Text="老魏&#x000A;模式" Margin="0,5,0,0"
FontSize="14" HorizontalAlignment="Center"
Foreground="{Binding ElementName=BtnExit, Path=Foreground}"/>
<Viewbox Height="30">
@ -44,19 +62,19 @@
FontFamily="Microsoft YaHei UI" FontSize="19"
OnContent="" OffContent="" Toggled="ToggleSwitchModeWei_Toggled"/>
</Viewbox>
<Button Name="BtnThickness" Content="粗细" FontFamily="Microsoft YaHei UI"
<Button Name="BtnThickness" Content="粗细" Visibility="Collapsed" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnThickness_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button Name="BtnErase" Content="橡皮" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnErase_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button Name="BtnSwitchTheme" Content="深色" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnSwitchTheme_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button Name="BtnSwitch" Content="背景" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnSwitch_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button Name="BtnClear" Content="清屏" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnClear_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<StackPanel Name="StackPanelColors" Margin="10,0,10,0">
<StackPanel Name="StackPanelColors" Margin="7,0,7,0">
<Button Name="BtnColorBlack" Content="" FontFamily="Microsoft YaHei UI" Background="Black"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelColors, Path=ActualWidth}"
Click="BtnColorBlack_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}"/>
@ -73,9 +91,23 @@
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelColors, Path=ActualWidth}"
Click="BtnColorYellow_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}"/>
</StackPanel>
<Button Name="BtnClear" Content="清屏" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnClear_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button x:Name="BtnHideInkCanvas" Content="隐藏&#x000A;画板" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnHideInkCanvas_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button x:Name="BtnCheckPPT" Visibility="Collapsed" Content="检查" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnCheckPPT_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<StackPanel Name="StackPanelPPTControls" Visibility="Collapsed">
<Button x:Name="BtnPPTSlidesUp" Content="↑" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnPPTSlidesUp_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<Button x:Name="BtnPPTSlidesDown" Content="↓" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnPPTSlidesDown_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
</StackPanel>
<Button x:Name="BtnSwitchSide" Content="⇆" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnSwitchSide_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
@ -83,7 +115,8 @@
<Button x:Name="BtnHideControl" Content="⇅" FontFamily="Microsoft YaHei UI"
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnHideControl_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="#7F909090"/>
<TextBlock Text="Developer&#x000A; XY Wang" FontSize="9.5" HorizontalAlignment="Center" Margin="0,10,0,0"/>
<TextBlock Text="Developer" FontSize="8.5" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,10,0,0" Foreground="{Binding ElementName=BtnExit, Path=Foreground}"/>
<TextBlock Text="XY Wang" FontSize="9" HorizontalAlignment="Center" Margin="0,3,0,0" Foreground="{Binding ElementName=BtnExit, Path=Foreground}"/>
</StackPanel>
</Grid>
</Window>

View File

@ -15,6 +15,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Office.Interop.PowerPoint;
using System.Runtime.InteropServices;
namespace Ink_Canvas
{
@ -40,28 +41,28 @@ namespace Ink_Canvas
{
try
{
drawingAttributes = new DrawingAttributes();
inkCanvas.DefaultDrawingAttributes = drawingAttributes;
//drawingAttributes = new DrawingAttributes();
drawingAttributes = inkCanvas.DefaultDrawingAttributes;
drawingAttributes.Color = Ink_DefaultColor;
if (File.Exists("Thickness.ini"))
{
try
{
int d = int.Parse(File.ReadAllText("Thickness.ini"));
double d = double.Parse(File.ReadAllText("Thickness.ini"));
drawingAttributes.Height = d;
drawingAttributes.Width = d;
}
catch
{
drawingAttributes.Height = 3;
drawingAttributes.Width = 3;
drawingAttributes.Height = 2.5;
drawingAttributes.Width = 2.5;
}
}
else
{
drawingAttributes.Height = 3;
drawingAttributes.Width = 3;
drawingAttributes.Height = 2.5;
drawingAttributes.Width = 2.5;
}
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
@ -101,72 +102,72 @@ namespace Ink_Canvas
// "GitHub: https://github.com/WXRIW/Ink-Canvas" +
// "");
string failedHotKeys = "";
//string failedHotKeys = "";
if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D1, () =>
{
if (isInkCanvasVisible)
{
Main_Grid.Visibility = Visibility.Hidden;
isInkCanvasVisible = false;
//inkCanvas.Strokes.Clear();
WindowState = WindowState.Minimized;
}
else
{
Main_Grid.Visibility = Visibility.Visible;
isInkCanvasVisible = true;
inkCanvas.Strokes.Clear();
WindowState = WindowState.Maximized;
}
}) == false)
{
failedHotKeys += Environment.NewLine + "Alt + 1";
}
//if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D1, () =>
//{
// if (isInkCanvasVisible)
// {
// Main_Grid.Visibility = Visibility.Hidden;
// isInkCanvasVisible = false;
// //inkCanvas.Strokes.Clear();
// WindowState = WindowState.Minimized;
// }
// else
// {
// Main_Grid.Visibility = Visibility.Visible;
// isInkCanvasVisible = true;
// inkCanvas.Strokes.Clear();
// WindowState = WindowState.Maximized;
// }
//}) == false)
//{
// failedHotKeys += Environment.NewLine + "Alt + 1";
//}
if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D2, () =>
{
if (isInkCanvasVisible)
{
Main_Grid.Visibility = Visibility.Hidden;
isInkCanvasVisible = false;
//inkCanvas.Strokes.Clear();
WindowState = WindowState.Minimized;
}
else
{
Main_Grid.Visibility = Visibility.Visible;
isInkCanvasVisible = true;
//inkCanvas.Strokes.Clear();
WindowState = WindowState.Maximized;
}
}) == false)
{
failedHotKeys += Environment.NewLine + "Alt + 2";
}
//if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D2, () =>
//{
// if (isInkCanvasVisible)
// {
// Main_Grid.Visibility = Visibility.Hidden;
// isInkCanvasVisible = false;
// //inkCanvas.Strokes.Clear();
// WindowState = WindowState.Minimized;
// }
// else
// {
// Main_Grid.Visibility = Visibility.Visible;
// isInkCanvasVisible = true;
// //inkCanvas.Strokes.Clear();
// WindowState = WindowState.Maximized;
// }
//}) == false)
//{
// failedHotKeys += Environment.NewLine + "Alt + 2";
//}
if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D3, () =>
{
if (inkCanvas.EditingMode != InkCanvasEditingMode.Ink)
{
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
}
else
{
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
}
}) == false)
{
failedHotKeys += Environment.NewLine + "Alt + 3";
}
//if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D3, () =>
//{
// if (inkCanvas.EditingMode != InkCanvasEditingMode.Ink)
// {
// inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
// }
// else
// {
// inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
// }
//}) == false)
//{
// failedHotKeys += Environment.NewLine + "Alt + 3";
//}
if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D4, () =>
{
Close();
}) == false)
{
failedHotKeys += Environment.NewLine + "Alt + 4";
}
//if (Hotkey.Regist(this, HotkeyModifiers.MOD_ALT, Key.D4, () =>
//{
// Close();
//}) == false)
//{
// failedHotKeys += Environment.NewLine + "Alt + 4";
//}
loadPenCanvas();
}
@ -244,6 +245,19 @@ namespace Ink_Canvas
int inkColor = 0;
private void ColorSwitchCheck()
{
if (Main_Grid.Background == Brushes.Transparent)
{
BtnHideInkCanvas_Click(BtnHideInkCanvas, null);
if (currentMode == 1)
{
currentMode = 0;
GridBackgroundCover.Visibility = Visibility.Hidden;
}
}
}
private void BtnColorBlack_Click(object sender, RoutedEventArgs e)
{
inkColor = 0;
@ -256,6 +270,8 @@ namespace Ink_Canvas
{
inkCanvas.DefaultDrawingAttributes.Color = Colors.Black;
}
ColorSwitchCheck();
}
private void BtnColorRed_Click(object sender, RoutedEventArgs e)
@ -263,6 +279,8 @@ namespace Ink_Canvas
inkColor = 1;
forceEraser = false;
inkCanvas.DefaultDrawingAttributes.Color = Colors.Red;
ColorSwitchCheck();
}
private void BtnColorGreen_Click(object sender, RoutedEventArgs e)
@ -270,6 +288,8 @@ namespace Ink_Canvas
inkColor = 2;
forceEraser = false;
inkCanvas.DefaultDrawingAttributes.Color = StringToColor("#FF1ED760");
ColorSwitchCheck();
}
private void BtnColorBlue_Click(object sender, RoutedEventArgs e)
@ -277,6 +297,8 @@ namespace Ink_Canvas
inkColor = 3;
forceEraser = false;
inkCanvas.DefaultDrawingAttributes.Color = StringToColor("#FF239AD6");
ColorSwitchCheck();
}
private void BtnColorYellow_Click(object sender, RoutedEventArgs e)
@ -284,6 +306,8 @@ namespace Ink_Canvas
inkColor = 4;
forceEraser = false;
inkCanvas.DefaultDrawingAttributes.Color = StringToColor("#FFFFDC00");
ColorSwitchCheck();
}
private Color StringToColor(string colorStr)
@ -312,6 +336,13 @@ namespace Ink_Canvas
{
if (forceEraser) return;
//Label.Content = e.GetTouchPoint(null).Bounds.Width.ToString();
if (ToggleSwitchAutoWeight.IsOn && e.GetTouchPoint(null).Bounds.Width != 0)
{
inkCanvas.DefaultDrawingAttributes.Width = e.GetTouchPoint(null).Bounds.Width / 2 + 1;
inkCanvas.DefaultDrawingAttributes.Height = inkCanvas.DefaultDrawingAttributes.Width;
}
else
{
if (e.GetTouchPoint(null).Bounds.Width > BoundsWidth)
{
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
@ -321,27 +352,40 @@ namespace Ink_Canvas
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
}
}
}
int currentMode = 0;
private void BtnSwitch_Click(object sender, RoutedEventArgs e)
{
switch ((++currentMode) % 3)
if (Main_Grid.Background == Brushes.Transparent)
{
BtnHideInkCanvas_Click(BtnHideInkCanvas, e);
if (currentMode == 0)
{
currentMode++;
GridBackgroundCover.Visibility = Visibility.Visible;
}
}
else
{
switch ((++currentMode) % 2)
{
case 0:
BtnExit.Foreground = Brushes.Black;
BtnColorBlack.Background = Brushes.Black;
GridBackgroundCover.Background = Brushes.Transparent;
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;
if (inkColor == 0)
{
inkCanvas.DefaultDrawingAttributes.Color = Colors.Black;
}
GridBackgroundCover.Visibility = Visibility.Hidden;
break;
case 1:
GridBackgroundCover.Background = new SolidColorBrush(StringToColor("#FFF2F2F2"));
GridBackgroundCover.Visibility = Visibility.Visible;
break;
case 2:
}
}
}
private void BtnSwitchTheme_Click(object sender, RoutedEventArgs e)
{
if (BtnSwitchTheme.Content.ToString() == "深色")
{
BtnSwitchTheme.Content = "浅色";
BtnExit.Foreground = Brushes.White;
GridBackgroundCover.Background = new SolidColorBrush(StringToColor("#FF1A1A1A"));
BtnColorBlack.Background = Brushes.White;
@ -350,7 +394,18 @@ namespace Ink_Canvas
{
inkCanvas.DefaultDrawingAttributes.Color = Colors.White;
}
break;
}
else
{
BtnSwitchTheme.Content = "深色";
BtnExit.Foreground = Brushes.Black;
GridBackgroundCover.Background = new SolidColorBrush(StringToColor("#FFF2F2F2"));
BtnColorBlack.Background = Brushes.Black;
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;
if (inkColor == 0)
{
inkCanvas.DefaultDrawingAttributes.Color = Colors.Black;
}
}
}
@ -372,12 +427,14 @@ namespace Ink_Canvas
{
Main_Grid.Background = new SolidColorBrush(StringToColor("#01FFFFFF"));
inkCanvas.Visibility = Visibility.Visible;
GridBackgroundCoverHolder.Visibility = Visibility.Visible;
BtnHideInkCanvas.Content = "隐藏\n画板";
}
else
{
Main_Grid.Background = Brushes.Transparent;
inkCanvas.Visibility = Visibility.Collapsed;
GridBackgroundCoverHolder.Visibility = Visibility.Collapsed;
BtnHideInkCanvas.Content = "显示\n画板";
}
}
@ -393,6 +450,82 @@ namespace Ink_Canvas
StackPanelMain.HorizontalAlignment = HorizontalAlignment.Right;
}
}
Microsoft.Office.Interop.PowerPoint.Application pptApplication = null;
Microsoft.Office.Interop.PowerPoint.Presentation presentation = null;
Microsoft.Office.Interop.PowerPoint.Slides slides = null;
Microsoft.Office.Interop.PowerPoint.Slide slide = null;
int slidescount = 0;
private void BtnCheckPPT_Click(object sender, RoutedEventArgs e)
{
//try
//{
pptApplication = Marshal.GetActiveObject("PowerPoint.Application") as Microsoft.Office.Interop.PowerPoint.Application;
//pptApplication.SlideShowWindows[1].View.Next();
if (pptApplication != null)
{
//获得演示文稿对象
presentation = pptApplication.ActivePresentation;
// 获得幻灯片对象集合
slides = presentation.Slides;
// 获得幻灯片的数量
slidescount = slides.Count;
// 获得当前选中的幻灯片
try
{
// 在普通视图下这种方式可以获得当前选中的幻灯片对象
// 然而在阅读模式下,这种方式会出现异常
slide = slides[pptApplication.ActiveWindow.Selection.SlideRange.SlideNumber];
}
catch
{
// 在阅读模式下出现异常时,通过下面的方式来获得当前选中的幻灯片对象
slide = pptApplication.SlideShowWindows[1].View.Slide;
}
}
if (pptApplication == null) throw new Exception();
StackPanelPPTControls.Visibility = Visibility.Visible;
//}
//catch
//{
// StackPanelPPTControls.Visibility = Visibility.Collapsed;
// MessageBox.Show("未找到幻灯片");
//}
}
private void BtnPPTSlidesUp_Click(object sender, RoutedEventArgs e)
{
try
{
slides[5].Select();
slide = slides[5];
pptApplication.SlideShowWindows[0].View.Previous();
}
catch
{
StackPanelPPTControls.Visibility = Visibility.Collapsed;
}
}
private void BtnPPTSlidesDown_Click(object sender, RoutedEventArgs e)
{
try
{
pptApplication.SlideShowWindows[0].View.Next();
}
catch (Exception ex)
{
StackPanelPPTControls.Visibility = Visibility.Collapsed;
MessageBox.Show(ex.ToString());
}
}
private void ToggleSwitchAutoWeight_Toggled(object sender, RoutedEventArgs e)
{
}
}
enum HotkeyModifiers