diff --git a/CRSim.Core/Abstractions/ITimeService.cs b/CRSim.Core/Abstractions/ITimeService.cs
index 293e8b6..6e52db5 100644
--- a/CRSim.Core/Abstractions/ITimeService.cs
+++ b/CRSim.Core/Abstractions/ITimeService.cs
@@ -3,14 +3,15 @@
public interface ITimeService
{
event EventHandler OneSecondElapsed;
+
event EventHandler RefreshSecondsElapsed;
void Start();
- void Stop();
DateTime GetDateTimeNow();
DateTime SimulateTime { get; set; } // 初始模拟时间
+
double Speed { get; set; } // 模拟倍速
}
}
\ No newline at end of file
diff --git a/CRSim.Core/Services/TimeService.cs b/CRSim.Core/Services/TimeService.cs
index a36baab..a693f00 100644
--- a/CRSim.Core/Services/TimeService.cs
+++ b/CRSim.Core/Services/TimeService.cs
@@ -51,12 +51,6 @@ namespace CRSim.Core.Services
_lastSpeedChangeTime = DateTime.Now; // 启动时刷新时间
}
- public void Stop()
- {
- _oneSecondTimer.Stop();
- _twentySecondsTimer.Stop();
- }
-
private void OnOneSecondElapsed(object sender, ElapsedEventArgs e)
{
OneSecondElapsed?.Invoke(this, EventArgs.Empty);
diff --git a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml
index a717ee4..0356d0d 100644
--- a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml
+++ b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml
@@ -9,7 +9,6 @@
Background="Transparent"
Foreground="White"
SizeToContent="WidthAndHeight"
- ResizeMode="NoResize"
WindowStyle="None"
AllowsTransparency="True"
MouseDown="Window_MouseDown"
@@ -24,15 +23,23 @@
-
+
+
-
+
+
+
+ VerticalAlignment="Center" Margin="4,0,2,0" MouseLeftButtonDown="CloseWindow"/>
-
+
+
+
diff --git a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs
index 8c09ecd..e780e92 100644
--- a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs
+++ b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs
@@ -1,5 +1,4 @@
-using CommunityToolkit.Mvvm.Input;
-using CRSim.Core.Abstractions;
+using CRSim.Core.Abstractions;
using CRSim.ScreenSimulator.Models;
using System.Windows;
using System.Windows.Controls;
@@ -15,12 +14,13 @@ namespace CRSim.ScreenSimulator.Views
public Session Session { get; }
public SimulatorWindow(Page page,ITimeService timeService,StyleManager styleManager,Session session)
{
- Session = session;
InitializeComponent();
RenderOptions.SetEdgeMode(this, EdgeMode.Aliased);
+ Session = session;
contentFrame.Content = page;
_timeService = timeService;
_styleManager = styleManager;
+
foreach (var resource in page.Resources.Values)
{
if (resource is IHasTimeService needsTime)
@@ -28,6 +28,15 @@ namespace CRSim.ScreenSimulator.Views
needsTime.TimeService = timeService;
}
}
+ _timeService.OneSecondElapsed += UpdateTime;
+ }
+
+ private void UpdateTime(object? sender, EventArgs e)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ TimeText.Text = _timeService.GetDateTimeNow().ToString("HH:mm:ss");
+ });
}
private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
@@ -78,5 +87,20 @@ namespace CRSim.ScreenSimulator.Views
Close();
});
}
+
+ private void FullScreen(object sender, MouseButtonEventArgs e)
+ {
+ Left = 0;
+ viewbox.Stretch = Stretch.Uniform;
+ FullScreenIcon.Visibility = Visibility.Collapsed;
+ RestoreWindowIcon.Visibility = Visibility.Visible;
+ }
+
+ private void RestoreWindow(object sender, MouseButtonEventArgs e)
+ {
+ viewbox.Stretch = Stretch.None;
+ FullScreenIcon.Visibility = Visibility.Visible;
+ RestoreWindowIcon.Visibility = Visibility.Collapsed;
+ }
}
}