This commit is contained in:
PrefacedCorg
2026-04-17 01:20:06 +08:00
parent 8a8cf9a679
commit edc94547ab
10 changed files with 73 additions and 68 deletions
+15 -38
View File
@@ -5592,7 +5592,7 @@
</Border>
</Border>
<controls:BoardToolbarButton x:Name="BoardInsertImage"
Position="Last"
Position="Middle"
Label="{i18n:I18n Key=Board_InsertImage}"
IconGeometry="F1 M24,24z M0,0z M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2-0.9 2-2V5C21,3.9 20.1,3 19,3zM19,19H5V5h14V19z M17,7c-1.1,0-2,0.9-2,2s0.9,2 2,2 2-0.9 2-2S18.1,7 17,7zM7,17l2.5-3.01 1.96,2.36 2.54-3.21L17,17H7z"
ButtonMouseDown="Border_MouseDown"
@@ -5682,43 +5682,20 @@
</Border>
</Grid>
</Border>
<Border x:Name="BoardUndo" Width="60" Height="50" MouseDown="Border_MouseDown" MouseUp="SymbolIconUndo_MouseUp" BorderThickness="0,1,0,1" BorderBrush="{DynamicResource BoardFloatBarBorderBrush}" IsEnabled="{Binding ElementName=BtnUndo, Path=IsEnabled}" Background="{DynamicResource BoardFloatBarBackground}" Opacity="1">
<Grid Margin="6,6,6,4">
<Image VerticalAlignment="Top"
RenderOptions.BitmapScalingMode="HighQuality" Height="20" Width="20" Opacity="{Binding ElementName=BtnUndo, Path=IsEnabled, Converter={StaticResource IsEnabledToOpacityConverter}}">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="{DynamicResource IconForeground}"
Geometry="F1 M24,24z M0,0z M8.71408,16.8493L0.874451,9.00964 8.71408,1.17001 8.71408,7.42358 15.7239,7.42358C16.7074,7.42358 17.6791,7.62744 18.583,8.02124 19.4866,8.41493 20.3023,8.98966 20.9857,9.70849 21.6689,10.4271 22.2069,11.276 22.5726,12.2047 22.9383,13.1333 23.1256,14.126 23.1256,15.1268 23.1256,16.1276 22.9383,17.1203 22.5726,18.0489 22.2069,18.9776 21.6689,19.8264 20.9857,20.5451 20.3023,21.2639 19.4866,21.8387 18.583,22.2324 17.6791,22.6262 16.7074,22.83 15.7239,22.83L10.437,22.83 10.437,19.6579 15.7239,19.6579C16.2679,19.6579 16.8086,19.5453 17.3159,19.3243 17.8235,19.1031 18.29,18.7767 18.6867,18.3594 19.0835,17.942 19.4023,17.4422 19.6211,16.8866 19.8399,16.3308 19.9534,15.7326 19.9534,15.1268 19.9534,14.5209 19.8399,13.9227 19.6211,13.367 19.4023,12.8114 19.0835,12.3115 18.6867,11.8941 18.29,11.4769 17.8235,11.1505 17.3159,10.9293 16.8086,10.7083 16.2679,10.5957 15.7239,10.5957L8.71408,10.5957 8.71408,16.8493z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock Text="{i18n:I18n Key=Board_Undo}" Foreground="{DynamicResource FloatBarForeground}" VerticalAlignment="Bottom" HorizontalAlignment="Center" FontSize="12"
Style="{StaticResource AutoFitFloatBarLabel12}" />
</Grid>
</Border>
<Border x:Name="BoardRedo" Width="60" Height="50" CornerRadius="0,5,5,0" MouseDown="Border_MouseDown" MouseUp="SymbolIconRedo_MouseUp" BorderThickness="0,1,1,1" BorderBrush="{DynamicResource BoardFloatBarBorderBrush}" IsEnabled="{Binding ElementName=BtnRedo, Path=IsEnabled}" Background="{DynamicResource BoardFloatBarBackground}" Opacity="1">
<Grid Margin="6,6,6,4">
<Image VerticalAlignment="Top" RenderOptions.BitmapScalingMode="HighQuality" Height="20" Width="20" Opacity="{Binding ElementName=BtnRedo, Path=IsEnabled, Converter={StaticResource IsEnabledToOpacityConverter}}">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="{DynamicResource IconForeground}"
Geometry="F1 M24,24z M0,0z M15.2859,16.8493L23.1255,9.00964 15.2859,1.17001 15.2859,7.42358 8.27607,7.42358C7.29262,7.42358 6.32086,7.62744 5.41703,8.02124 4.51341,8.41493 3.69773,8.98966 3.01434,9.70849 2.33111,10.4271 1.79312,11.276 1.42741,12.2047 1.06174,13.1333 0.874422,14.126 0.874422,15.1268 0.874422,16.1276 1.06174,17.1203 1.42741,18.0489 1.79312,18.9776 2.33111,19.8264 3.01434,20.5451 3.69773,21.2639 4.51341,21.8387 5.41703,22.2324 6.32086,22.6262 7.29262,22.83 8.27607,22.83L13.563,22.83 13.563,19.6579 8.27607,19.6579C7.7321,19.6579 7.19139,19.5453 6.68406,19.3243 6.17652,19.1031 5.70999,18.7767 5.31333,18.3594 4.91651,17.942 4.59775,17.4422 4.37894,16.8866 4.1601,16.3308 4.04656,15.7326 4.04656,15.1268 4.04656,14.5209 4.1601,13.9227 4.37894,13.367 4.59775,12.8114 4.91651,12.3115 5.31333,11.8941 5.70999,11.4769 6.17652,11.1505 6.68406,10.9293 7.19139,10.7083 7.7321,10.5957 8.27607,10.5957L15.2859,10.5957 15.2859,16.8493z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock Text="{i18n:I18n Key=Board_Redo}" Foreground="{DynamicResource FloatBarForeground}" VerticalAlignment="Bottom"
HorizontalAlignment="Center" FontSize="12" Style="{StaticResource AutoFitFloatBarLabel12}" />
</Grid>
</Border>
<controls:BoardToolbarButton x:Name="BoardUndo"
Position="Middle"
Label="{i18n:I18n Key=Board_Undo}"
IconGeometry="F1 M24,24z M0,0z M8.71408,16.8493L0.874451,9.00964 8.71408,1.17001 8.71408,7.42358 15.7239,7.42358C16.7074,7.42358 17.6791,7.62744 18.583,8.02124 19.4866,8.41493 20.3023,8.98966 20.9857,9.70849 21.6689,10.4271 22.2069,11.276 22.5726,12.2047 22.9383,13.1333 23.1256,14.126 23.1256,15.1268 23.1256,16.1276 22.9383,17.1203 22.5726,18.0489 22.2069,18.9776 21.6689,19.8264 20.9857,20.5451 20.3023,21.2639 19.4866,21.8387 18.583,22.2324 17.6791,22.6262 16.7074,22.83 15.7239,22.83L10.437,22.83 10.437,19.6579 15.7239,19.6579C16.2679,19.6579 16.8086,19.5453 17.3159,19.3243 17.8235,19.1031 18.29,18.7767 18.6867,18.3594 19.0835,17.942 19.4023,17.4422 19.6211,16.8866 19.8399,16.3308 19.9534,15.7326 19.9534,15.1268 19.9534,14.5209 19.8399,13.9227 19.6211,13.367 19.4023,12.8114 19.0835,12.3115 18.6867,11.8941 18.29,11.4769 17.8235,11.1505 17.3159,10.9293 16.8086,10.7083 16.2679,10.5957 15.7239,10.5957L8.71408,10.5957 8.71408,16.8493z"
IsEnabledBinding="{Binding ElementName=BtnUndo, Path=IsEnabled}"
ButtonMouseDown="Border_MouseDown"
ButtonMouseUp="SymbolIconUndo_MouseUp" />
<controls:BoardToolbarButton x:Name="BoardRedo"
Position="Last"
Label="{i18n:I18n Key=Board_Redo}"
IconGeometry="F1 M24,24z M0,0z M15.2859,16.8493L23.1255,9.00964 15.2859,1.17001 15.2859,7.42358 8.27607,7.42358C7.29262,7.42358 6.32086,7.62744 5.41703,8.02124 4.51341,8.41493 3.69773,8.98966 3.01434,9.70849 2.33111,10.4271 1.79312,11.276 1.42741,12.2047 1.06174,13.1333 0.874422,14.126 0.874422,15.1268 0.874422,16.1276 1.06174,17.1203 1.42741,18.0489 1.79312,18.9776 2.33111,19.8264 3.01434,20.5451 3.69773,21.2639 4.51341,21.8387 5.41703,22.2324 6.32086,22.6262 7.29262,22.83 8.27607,22.83L13.563,22.83 13.563,19.6579 8.27607,19.6579C7.7321,19.6579 7.19139,19.5453 6.68406,19.3243 6.17652,19.1031 5.70999,18.7767 5.31333,18.3594 4.91651,17.942 4.59775,17.4422 4.37894,16.8866 4.1601,16.3308 4.04656,15.7326 4.04656,15.1268 4.04656,14.5209 4.1601,13.9227 4.37894,13.367 4.59775,12.8114 4.91651,12.3115 5.31333,11.8941 5.70999,11.4769 6.17652,11.1505 6.68406,10.9293 7.19139,10.7083 7.7321,10.5957 8.27607,10.5957L15.2859,10.5957 15.2859,16.8493z"
IsEnabledBinding="{Binding ElementName=BtnRedo, Path=IsEnabled}"
ButtonMouseDown="Border_MouseDown"
ButtonMouseUp="SymbolIconRedo_MouseUp" />
</ikw:SimpleStackPanel>
</Border>
+1 -1
View File
@@ -2884,7 +2884,7 @@ namespace Ink_Canvas
ShowPage(currentPageIndex);
}
// 快速面板退出PPT放映按钮事件
private void ExitPPTSlideShow_MouseUp(object sender, RoutedEventArgs e)
private void ExitPPTSlideShow_MouseUp(object sender, MouseButtonEventArgs e)
{
// 直接调用PPT放映结束按钮的逻辑
BtnPPTSlideShowEnd_Click(BtnPPTSlideShowEnd, null);
+3 -3
View File
@@ -65,7 +65,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">事件发送者。</param>
/// <param name="e">路由事件参数。</param>
public async void FoldFloatingBar_MouseUp(object sender, RoutedEventArgs e)
public async void FoldFloatingBar_MouseUp(object sender, MouseButtonEventArgs e)
{
await FoldFloatingBar(sender);
}
@@ -315,7 +315,7 @@ namespace Ink_Canvas
/// 1. 隐藏左侧快捷面板
/// 2. 隐藏右侧快捷面板
/// </remarks>
private void HideQuickPanel_MouseUp(object sender, RoutedEventArgs e)
private void HideQuickPanel_MouseUp(object sender, MouseButtonEventArgs e)
{
HideLeftQuickPanel();
HideRightQuickPanel();
@@ -326,7 +326,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">事件发送者。</param>
/// <param name="e">路由事件参数。</param>
public async void UnFoldFloatingBar_MouseUp(object sender, RoutedEventArgs e)
public async void UnFoldFloatingBar_MouseUp(object sender, MouseButtonEventArgs e)
{
await UnFoldFloatingBar(sender);
}
+17 -17
View File
@@ -626,7 +626,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">鼠标按钮事件参数</param>
internal void SymbolIconUndo_MouseUp(object sender, RoutedEventArgs e)
internal void SymbolIconUndo_MouseUp(object sender, MouseButtonEventArgs e)
{
if (!BtnUndo.IsEnabled) return;
BtnUndo_Click(BtnUndo, null);
@@ -659,7 +659,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">鼠标按钮事件参数</param>
internal void ImageBlackboard_MouseUp(object sender, RoutedEventArgs e)
internal void ImageBlackboard_MouseUp(object sender, MouseButtonEventArgs e)
{
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
@@ -933,7 +933,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">鼠标按钮事件参数</param>
internal void SymbolIconDelete_MouseUp(object sender, RoutedEventArgs e)
internal void SymbolIconDelete_MouseUp(object sender, MouseButtonEventArgs e)
{
if (inkCanvas.GetSelectedStrokes().Count > 0)
{
@@ -979,7 +979,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">鼠标按钮事件参数</param>
internal void SymbolIconSelect_MouseUp(object sender, RoutedEventArgs e)
internal void SymbolIconSelect_MouseUp(object sender, MouseButtonEventArgs e)
{
if (lastBorderMouseDownObject is Panel panel)
@@ -1098,7 +1098,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void SymbolIconSettings_Click(object sender, RoutedEventArgs e)
private void SymbolIconSettings_Click(object sender, MouseButtonEventArgs e)
{
if (isOpeningOrHidingSettingsPane) return;
HideSubPanels();
@@ -1110,7 +1110,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private async void SymbolIconScreenshot_MouseUp(object sender, RoutedEventArgs e)
private async void SymbolIconScreenshot_MouseUp(object sender, MouseButtonEventArgs e)
{
HideSubPanelsImmediately();
await Task.Delay(50);
@@ -1131,7 +1131,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void ImageCountdownTimer_MouseUp(object sender, RoutedEventArgs e)
private void ImageCountdownTimer_MouseUp(object sender, MouseButtonEventArgs e)
{
LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed;
@@ -1185,7 +1185,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void OperatingGuideWindowIcon_MouseUp(object sender, RoutedEventArgs e)
private void OperatingGuideWindowIcon_MouseUp(object sender, MouseButtonEventArgs e)
{
AnimationsHelper.HideWithSlideAndFade(BorderTools);
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
@@ -1199,7 +1199,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void SymbolIconRand_MouseUp(object sender, RoutedEventArgs e)
private void SymbolIconRand_MouseUp(object sender, MouseButtonEventArgs e)
{
// 如果控件被隐藏,不处理事件
if (BoardRandomDrawToolBtn.Visibility != Visibility.Visible) return;
@@ -1332,7 +1332,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void SymbolIconRandOne_MouseUp(object sender, RoutedEventArgs e)
private void SymbolIconRandOne_MouseUp(object sender, MouseButtonEventArgs e)
{
// 如果控件被隐藏,不处理事件
if (BoardSingleDrawToolBtn.Visibility != Visibility.Visible) return;
@@ -1407,7 +1407,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void GridInkReplayButton_MouseUp(object sender, RoutedEventArgs e)
private void GridInkReplayButton_MouseUp(object sender, MouseButtonEventArgs e)
{
//if (lastBorderMouseDownObject != sender) return;
@@ -1711,7 +1711,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">鼠标按钮事件参数</param>
private void SymbolIconTools_MouseUp(object sender, RoutedEventArgs e)
private void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e)
{
if (BorderTools.Visibility == Visibility.Visible)
{
@@ -2117,7 +2117,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
internal async void CursorIcon_Click(object sender, RoutedEventArgs e)
internal async void CursorIcon_Click(object sender, MouseButtonEventArgs e)
{
if (lastBorderMouseDownObject is Panel panel)
panel.Background = new SolidColorBrush(Colors.Transparent);
@@ -2232,7 +2232,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
internal void PenIcon_Click(object sender, RoutedEventArgs e)
internal void PenIcon_Click(object sender, MouseButtonEventArgs e)
{
if (lastBorderMouseDownObject is Panel panel)
panel.Background = new SolidColorBrush(Colors.Transparent);
@@ -2477,7 +2477,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
internal void EraserIcon_Click(object sender, RoutedEventArgs e)
internal void EraserIcon_Click(object sender, MouseButtonEventArgs e)
{
bool isAlreadyEraser = inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint;
forceEraser = false;
@@ -2590,7 +2590,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void EraserIconByStrokes_Click(object sender, RoutedEventArgs e)
private void EraserIconByStrokes_Click(object sender, MouseButtonEventArgs e)
{
// 禁用高级橡皮擦系统
DisableEraserOverlay();
@@ -2622,7 +2622,7 @@ namespace Ink_Canvas
/// </summary>
/// <param name="sender">发送者</param>
/// <param name="e">路由事件参数</param>
private void CursorWithDelIcon_Click(object sender, RoutedEventArgs e)
private void CursorWithDelIcon_Click(object sender, MouseButtonEventArgs e)
{
SymbolIconDelete_MouseUp(sender, null);
CursorIcon_Click(null, null);
@@ -94,7 +94,7 @@ namespace Ink_Canvas
/// 3. 隐藏通知面板
/// 4. 调用SaveInkCanvasStrokes方法保存墨迹
/// </remarks>
private void SymbolIconSaveStrokes_MouseUp(object sender, RoutedEventArgs e)
private void SymbolIconSaveStrokes_MouseUp(object sender, MouseButtonEventArgs e)
{
if (lastBorderMouseDownObject != sender || inkCanvas.Visibility != Visibility.Visible) return;
@@ -901,7 +901,7 @@ namespace Ink_Canvas
/// - 其他:处理单个墨迹文件(二进制格式)
/// 5. 如果墨迹画布不可见,切换到鼠标模式
/// </remarks>
private void SymbolIconOpenStrokes_MouseUp(object sender, RoutedEventArgs e)
private void SymbolIconOpenStrokes_MouseUp(object sender, MouseButtonEventArgs e)
{
if (lastBorderMouseDownObject != sender) return;
AnimationsHelper.HideWithSlideAndFade(BorderTools);
+1 -1
View File
@@ -33,7 +33,7 @@ namespace Ink_Canvas
/// 3. 如果形状绘制面板可见,则隐藏它
/// 4. 如果形状绘制面板不可见,则显示它
/// </remarks>
private void ImageDrawShape_MouseUp(object sender, RoutedEventArgs e)
private void ImageDrawShape_MouseUp(object sender, MouseButtonEventArgs e)
{
if (BorderDrawShape.Visibility == Visibility.Visible)
{
@@ -113,6 +113,34 @@ namespace Ink_Canvas.Controls
set => LabelTextBlock.Foreground = value;
}
public static readonly DependencyProperty IsEnabledBindingProperty = DependencyProperty.Register(
nameof(IsEnabledBinding), typeof(bool?), typeof(BoardToolbarButton),
new PropertyMetadata(null, OnIsEnabledBindingChanged));
private static void OnIsEnabledBindingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var button = (BoardToolbarButton)d;
if (e.NewValue is bool isEnabled)
{
button.IsEnabled = isEnabled;
button.UpdateIconOpacity(isEnabled);
}
}
public bool? IsEnabledBinding
{
get => (bool?)GetValue(IsEnabledBindingProperty);
set => SetValue(IsEnabledBindingProperty, value);
}
private void UpdateIconOpacity(bool isEnabled)
{
if (ButtonImage != null)
{
ButtonImage.Opacity = isEnabled ? 1.0 : 0.4;
}
}
public BoardToolbarButton()
{
InitializeComponent();
+2 -2
View File
@@ -65,7 +65,7 @@ namespace Ink_Canvas.Controls
set => SetValue(LabelFontSizeProperty, value);
}
public event RoutedEventHandler ButtonMouseUp;
public event MouseButtonEventHandler ButtonMouseUp;
public QuickPanelButton()
{
@@ -74,7 +74,7 @@ namespace Ink_Canvas.Controls
private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e)
{
ButtonMouseUp?.Invoke(this, new RoutedEventArgs(e.RoutedEvent, this));
ButtonMouseUp?.Invoke(this, e);
}
}
}
+2 -2
View File
@@ -84,7 +84,7 @@ namespace Ink_Canvas.Controls
public event MouseButtonEventHandler ButtonMouseDown;
public event MouseEventHandler ButtonMouseLeave;
public event RoutedEventHandler ButtonMouseUp;
public event MouseButtonEventHandler ButtonMouseUp;
public ToolMenuButton()
{
@@ -115,7 +115,7 @@ namespace Ink_Canvas.Controls
private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e)
{
ButtonMouseUp?.Invoke(this, new RoutedEventArgs(e.RoutedEvent, this));
ButtonMouseUp?.Invoke(this, e);
}
}
}
@@ -61,7 +61,7 @@ namespace Ink_Canvas.Controls
public event MouseButtonEventHandler ButtonMouseDown;
public event MouseEventHandler ButtonMouseLeave;
public event RoutedEventHandler ButtonMouseUp;
public event MouseButtonEventHandler ButtonMouseUp;
public ToolbarImageButton()
{
@@ -104,7 +104,7 @@ namespace Ink_Canvas.Controls
ButtonPanel.Background = Brushes.Transparent;
_lastPressedButton = null;
}
ButtonMouseUp?.Invoke(this, new RoutedEventArgs(e.RoutedEvent, this));
ButtonMouseUp?.Invoke(this, e);
}
}
}