fix:图片墨迹保存问题

This commit is contained in:
2025-07-29 17:38:58 +08:00
parent 53a498c581
commit 1c1dd81474
5 changed files with 192 additions and 32 deletions
@@ -1789,11 +1789,11 @@ namespace Ink_Canvas {
// 总是恢复备份墨迹,不管是否在PPT模式
// PPT墨迹和白板墨迹应该分别管理,不应该互相影响
RestoreStrokes();
RestoreStrokes(true);
LogHelper.WriteLogToFile($"退出白板模式,恢复备份墨迹。当前模式:{(BtnPPTSlideShowEnd.Visibility == Visibility.Visible ? "PPT放映" : "")}", LogHelper.LogType.Trace);
// 退出白板时清空图片
inkCanvas.Children.Clear();
// 注释掉:退出白板时不应该清空图片,因为RestoreStrokes()已经恢复了正确的状态
// inkCanvas.Children.Clear();
if (BtnSwitchTheme.Content.ToString() == "浅色") {
BtnSwitch.Content = "黑板";
@@ -1837,8 +1837,8 @@ namespace Ink_Canvas {
RestoreStrokes(true);
LogHelper.WriteLogToFile($"切换到桌面模式,恢复备份墨迹。当前模式:{(BtnPPTSlideShowEnd.Visibility == Visibility.Visible ? "PPT放映" : "")}", LogHelper.LogType.Trace);
// 退出白板时清空图片
inkCanvas.Children.Clear();
// 注释掉:退出白板时不应该清空图片,因为RestoreStrokes()已经恢复了正确的状态
// inkCanvas.Children.Clear();
if (BtnSwitchTheme.Content.ToString() == "浅色") {
BtnSwitch.Content = "黑板";
@@ -2044,17 +2044,10 @@ namespace Ink_Canvas {
string timestamp = "img_" + DateTime.Now.ToString("yyyyMMdd_HH_mm_ss_fff");
image.Name = timestamp;
// 新缩放逻辑:最大宽高为画布一半,并居中
double maxWidth = inkCanvas.ActualWidth / 2;
double maxHeight = inkCanvas.ActualHeight / 2;
double scaleX = maxWidth / image.Width;
double scaleY = maxHeight / image.Height;
double scale = Math.Min(1, Math.Min(scaleX, scaleY));
image.Width = image.Width * scale;
image.Height = image.Height * scale;
InkCanvas.SetLeft(image, (inkCanvas.ActualWidth - image.Width) / 2);
InkCanvas.SetTop(image, (inkCanvas.ActualHeight - image.Height) / 2);
CenterAndScaleElement(image);
InkCanvas.SetLeft(image, 0);
InkCanvas.SetTop(image, 0);
inkCanvas.Children.Add(image);
timeMachine.CommitElementInsertHistory(image);
@@ -2062,6 +2055,5 @@ namespace Ink_Canvas {
}
}
}
}