笔迹粗细大小调节
This commit is contained in:
lincube
2026-03-24 20:16:44 +08:00
parent a0bb83c743
commit b83cfb47b0
2 changed files with 45 additions and 9 deletions

View File

@@ -98,17 +98,34 @@
PlacementTarget="{Binding #PenButton}" PlacementTarget="{Binding #PenButton}"
IsLightDismissEnabled="True" IsLightDismissEnabled="True"
WindowManagerAddShadowHint="False"> WindowManagerAddShadowHint="False">
<Border Background="{DynamicResource SystemControlBackgroundChromeMediumBrush}" <Border Background="{DynamicResource AdaptiveSurfaceBaseBrush}"
BorderBrush="{DynamicResource SystemControlForegroundBaseMediumLowBrush}" BorderBrush="{DynamicResource SystemControlForegroundBaseMediumLowBrush}"
BorderThickness="1" BorderThickness="1"
CornerRadius="8" CornerRadius="8"
Padding="12"> Padding="12">
<ColorView x:Name="InkColorPicker" <StackPanel Spacing="12">
IsAlphaEnabled="False" <ColorView x:Name="InkColorPicker"
IsColorSpectrumVisible="True" IsAlphaEnabled="False"
IsColorPaletteVisible="True" IsColorSpectrumVisible="True"
IsHexInputVisible="True" IsColorPaletteVisible="True"
ColorChanged="OnColorPickerColorChanged" /> IsHexInputVisible="True"
ColorChanged="OnColorPickerColorChanged" />
<Grid ColumnDefinitions="Auto,*"
ColumnSpacing="8">
<TextBlock Grid.Column="0"
Text="粗细"
VerticalAlignment="Center"
FontSize="12" />
<Slider x:Name="InkThicknessSlider"
Grid.Column="1"
Minimum="1"
Maximum="8"
Value="2.5"
SmallChange="0.5"
LargeChange="1"
ValueChanged="OnInkThicknessSliderValueChanged" />
</Grid>
</StackPanel>
</Border> </Border>
</Popup> </Popup>
</Grid> </Grid>

View File

@@ -40,6 +40,7 @@ public partial class WhiteboardWidget : UserControl, IDesktopComponentWidget, IC
private WhiteboardToolMode _toolMode = WhiteboardToolMode.Pen; private WhiteboardToolMode _toolMode = WhiteboardToolMode.Pen;
private bool? _isNightModeApplied; private bool? _isNightModeApplied;
private SKColor _selectedInkColor = SKColors.Black; private SKColor _selectedInkColor = SKColors.Black;
private float _selectedInkThickness = 2.5f;
private string _componentId = BuiltInComponentIds.DesktopWhiteboard; private string _componentId = BuiltInComponentIds.DesktopWhiteboard;
private string _placementId = string.Empty; private string _placementId = string.Empty;
private int _noteRetentionDays = WhiteboardNoteRetentionPolicy.DefaultDays; private int _noteRetentionDays = WhiteboardNoteRetentionPolicy.DefaultDays;
@@ -81,6 +82,11 @@ public partial class WhiteboardWidget : UserControl, IDesktopComponentWidget, IC
_selectedInkColor.Green, _selectedInkColor.Green,
_selectedInkColor.Blue); _selectedInkColor.Blue);
} }
if (InkThicknessSlider is not null)
{
InkThicknessSlider.Value = _selectedInkThickness;
}
} }
public int NoteRetentionDays => _noteRetentionDays; public int NoteRetentionDays => _noteRetentionDays;
@@ -111,7 +117,7 @@ public partial class WhiteboardWidget : UserControl, IDesktopComponentWidget, IC
InkCanvas.EditingMode = InkCanvasEditingMode.Ink; InkCanvas.EditingMode = InkCanvasEditingMode.Ink;
var settings = InkCanvas.AvaloniaSkiaInkCanvas.Settings; var settings = InkCanvas.AvaloniaSkiaInkCanvas.Settings;
settings.IgnorePressure = true; settings.IgnorePressure = true;
settings.InkThickness = 2.5f; settings.InkThickness = _selectedInkThickness;
settings.EraserSize = new Size(20, 20); settings.EraserSize = new Size(20, 20);
settings.IsBitmapCacheEnabled = true; settings.IsBitmapCacheEnabled = true;
settings.MaxBitmapCacheSize = 2048; settings.MaxBitmapCacheSize = 2048;
@@ -149,7 +155,6 @@ public partial class WhiteboardWidget : UserControl, IDesktopComponentWidget, IC
} }
var settings = InkCanvas.AvaloniaSkiaInkCanvas.Settings; var settings = InkCanvas.AvaloniaSkiaInkCanvas.Settings;
settings.InkThickness = (float)Math.Clamp(_currentCellSize * 0.06, 2.0, 6.0);
var eraserSize = Math.Clamp(_currentCellSize * 0.42, 12, 44); var eraserSize = Math.Clamp(_currentCellSize * 0.42, 12, 44);
settings.EraserSize = new Size(eraserSize, eraserSize); settings.EraserSize = new Size(eraserSize, eraserSize);
} }
@@ -351,6 +356,15 @@ public partial class WhiteboardWidget : UserControl, IDesktopComponentWidget, IC
RefreshToolButtonVisuals(); RefreshToolButtonVisuals();
} }
private void SetInkThickness(float thickness)
{
_selectedInkThickness = Math.Clamp(thickness, 1.0f, 8.0f);
if (_toolMode == WhiteboardToolMode.Pen)
{
InkCanvas.AvaloniaSkiaInkCanvas.Settings.InkThickness = _selectedInkThickness;
}
}
private void RefreshToolButtonVisuals() private void RefreshToolButtonVisuals()
{ {
var isNightMode = _isNightModeApplied ?? ResolveIsNightMode(); var isNightMode = _isNightModeApplied ?? ResolveIsNightMode();
@@ -418,6 +432,11 @@ public partial class WhiteboardWidget : UserControl, IDesktopComponentWidget, IC
SetInkColor(new SKColor(color.R, color.G, color.B, color.A)); SetInkColor(new SKColor(color.R, color.G, color.B, color.A));
} }
private void OnInkThicknessSliderValueChanged(object? sender, RangeBaseValueChangedEventArgs e)
{
SetInkThickness((float)e.NewValue);
}
private void OnEraserButtonClick(object? sender, RoutedEventArgs e) private void OnEraserButtonClick(object? sender, RoutedEventArgs e)
{ {
SetToolMode(WhiteboardToolMode.Eraser); SetToolMode(WhiteboardToolMode.Eraser);