This commit is contained in:
2025-08-12 15:45:33 +08:00
parent 904b2c0988
commit cde5daf19a
5 changed files with 70 additions and 1 deletions
+7 -1
View File
@@ -806,7 +806,13 @@
<TextBlock Text="# 请注意,若不保留双曲线渐近线可能会有遇到撤回相关的 BUG 影响用。" TextWrapping="Wrap" <TextBlock Text="# 请注意,若不保留双曲线渐近线可能会有遇到撤回相关的 BUG 影响用。" TextWrapping="Wrap"
Foreground="#a1a1aa" /> Foreground="#a1a1aa" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="使用WPF默认贝塞尔曲线平滑" <TextBlock Foreground="#fafafa" Text="绘制圆时显示圆心位置" VerticalAlignment="Center" FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent="" Name="ToggleSwitchShowCircleCenter"
IsOn="True" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchShowCircleCenter_Toggled" />
</ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="使用WPF默认贝塞尔曲线平滑"
VerticalAlignment="Center" FontSize="14" Margin="0,0,16,0" /> VerticalAlignment="Center" FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent="" Name="ToggleSwitchFitToCurve" <ui:ToggleSwitch OnContent="" OffContent="" Name="ToggleSwitchFitToCurve"
IsOn="False" FontFamily="Microsoft YaHei UI" FontWeight="Bold" IsOn="False" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
+7
View File
@@ -2791,6 +2791,13 @@ namespace Ink_Canvas
SaveSettingsToFile(); SaveSettingsToFile();
} }
private void ToggleSwitchShowCircleCenter_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.Canvas.ShowCircleCenter = ToggleSwitchShowCircleCenter.IsOn;
SaveSettingsToFile();
}
} }
} }
@@ -550,6 +550,7 @@ namespace Ink_Canvas
ToggleSwitchClearCanvasAndClearTimeMachine.IsOn = ToggleSwitchClearCanvasAndClearTimeMachine.IsOn =
Settings.Canvas.ClearCanvasAndClearTimeMachine; Settings.Canvas.ClearCanvasAndClearTimeMachine;
ToggleSwitchClearCanvasAlsoClearImages.IsOn = Settings.Canvas.ClearCanvasAlsoClearImages; ToggleSwitchClearCanvasAlsoClearImages.IsOn = Settings.Canvas.ClearCanvasAlsoClearImages;
ToggleSwitchShowCircleCenter.IsOn = Settings.Canvas.ShowCircleCenter;
switch (Settings.Canvas.EraserShapeType) switch (Settings.Canvas.EraserShapeType)
{ {
@@ -890,6 +890,12 @@ namespace Ink_Canvas
lastTempStroke = stroke; lastTempStroke = stroke;
inkCanvas.Strokes.Add(stroke); inkCanvas.Strokes.Add(stroke);
// 如果启用了圆心标记功能,则绘制圆心
if (Settings.Canvas.ShowCircleCenter)
{
DrawCircleCenter(iniP);
}
break; break;
case 16: case 16:
_currentCommitType = CommitReason.ShapeDrawing; _currentCommitType = CommitReason.ShapeDrawing;
@@ -989,6 +995,12 @@ namespace Ink_Canvas
lastTempStrokeCollection = strokes; lastTempStrokeCollection = strokes;
inkCanvas.Strokes.Add(strokes); inkCanvas.Strokes.Add(strokes);
// 如果启用了圆心标记功能,则绘制圆心
if (Settings.Canvas.ShowCircleCenter)
{
DrawCircleCenter(iniP);
}
break; break;
case 24: case 24:
case 25: case 25:
@@ -1953,5 +1965,46 @@ namespace Ink_Canvas
inkCanvas.EditingMode = InkCanvasEditingMode.None; inkCanvas.EditingMode = InkCanvasEditingMode.None;
SetCursorBasedOnEditingMode(inkCanvas); SetCursorBasedOnEditingMode(inkCanvas);
} }
/// <summary>
/// 绘制圆心标记
/// </summary>
/// <param name="centerPoint">圆心位置</param>
private void DrawCircleCenter(Point centerPoint)
{
try
{
// 创建一个点作为圆心标记
var centerSize = 0.5; // 圆心标记的大小
// 创建一个小圆作为圆心标记
var circlePoints = new List<Point>();
for (double angle = 0; angle <= 2 * Math.PI; angle += 0.1)
{
circlePoints.Add(new Point(
centerPoint.X + centerSize * Math.Cos(angle),
centerPoint.Y + centerSize * Math.Sin(angle)
));
}
// 绘制圆心点
var point = new StylusPointCollection(circlePoints);
var stroke = new Stroke(point)
{
DrawingAttributes = inkCanvas.DefaultDrawingAttributes.Clone()
};
// 设置圆心点的样式
stroke.DrawingAttributes.Width = 2.0;
stroke.DrawingAttributes.Height = 2.0;
// 添加到画布
inkCanvas.Strokes.Add(stroke);
}
catch (Exception ex)
{
Debug.WriteLine($"绘制圆心标记失败: {ex.Message}");
}
}
} }
} }
+2
View File
@@ -90,6 +90,8 @@ namespace Ink_Canvas
public bool EnablePalmEraser { get; set; } = true; public bool EnablePalmEraser { get; set; } = true;
[JsonProperty("clearCanvasAlsoClearImages")] [JsonProperty("clearCanvasAlsoClearImages")]
public bool ClearCanvasAlsoClearImages { get; set; } = true; public bool ClearCanvasAlsoClearImages { get; set; } = true;
[JsonProperty("showCircleCenter")]
public bool ShowCircleCenter { get; set; } = false;
} }
public enum OptionalOperation public enum OptionalOperation