diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml b/src/Snap.Hutao/Snap.Hutao/App.xaml
index 7ea2e5c4..e2ad5be8 100644
--- a/src/Snap.Hutao/Snap.Hutao/App.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/App.xaml
@@ -1,98 +1,30 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- #FF74BF00
- #FFF4F4F4
-
-
-
- #FF90E800
- #FF242424
-
-
-
-
-
- 4,4,0,0
- 0,0,4,4
-
- 288
- 212
- 304
- 320
- 180
- 64
- 100
-
- 0.2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/Card.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Card.xaml
new file mode 100644
index 00000000..d42eb68e
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Card.xaml
@@ -0,0 +1,21 @@
+
+
+
+
+
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/Color.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Color.xaml
new file mode 100644
index 00000000..9218c5fd
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/Color.xaml
@@ -0,0 +1,33 @@
+
+
+
+ #FF74BF00
+ #FFF4F4F4
+ #00000000
+
+
+ #FF90E800
+ #FF242424
+ #60000000
+
+
+
+ #FF5180CB
+ #FFA156E0
+ #FFBC6932
+
+ #FF0063FF
+ #FFFFA400
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/CornerRadius.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/CornerRadius.xaml
new file mode 100644
index 00000000..f2ebb9f5
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/CornerRadius.xaml
@@ -0,0 +1,4 @@
+
+ 4,4,0,0
+ 0,0,4,4
+
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/ItemContainerStyle.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/ItemContainerStyle.xaml
new file mode 100644
index 00000000..d2a12ec4
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/ItemContainerStyle.xaml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/NumericValue.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/NumericValue.xaml
new file mode 100644
index 00000000..49606612
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/NumericValue.xaml
@@ -0,0 +1,14 @@
+
+
+ 288
+
+ 212
+ 304
+ 320
+ 180
+ 64
+ 100
+
+
+ 0.2
+
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml b/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml
index 50327554..fadb4b6a 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Theme/PageOverride.xaml
@@ -2,5 +2,5 @@
- 0
+ 0
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs
index 30da56c5..a2b4c497 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs
@@ -48,7 +48,7 @@ internal sealed class HotKeyController : IHotKeyController
public void OnHotKeyPressed(in HotKeyParameter parameter)
{
- if (parameter is { Key: VIRTUAL_KEY.VK_F8, Modifier: 0 })
+ if (parameter is { Key: VIRTUAL_KEY.VK_F8, NativeModifier: 0 })
{
lock (locker)
{
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs
index 4cc9b88e..8a8cf3e2 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyParameter.cs
@@ -7,6 +7,11 @@ namespace Snap.Hutao.Core.Windowing.HotKey;
internal readonly struct HotKeyParameter
{
- public readonly ushort Modifier;
+ public readonly ushort NativeModifier;
public readonly VIRTUAL_KEY Key;
+
+ public readonly HOT_KEY_MODIFIERS Modifier
+ {
+ get => (HOT_KEY_MODIFIERS)NativeModifier;
+ }
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IMinMaxInfoHandler.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IMinMaxInfoHandler.cs
new file mode 100644
index 00000000..eee91675
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IMinMaxInfoHandler.cs
@@ -0,0 +1,16 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Windows.Win32.UI.WindowsAndMessaging;
+
+namespace Snap.Hutao.Core.Windowing;
+
+internal interface IMinMaxInfoHandler
+{
+ ///
+ /// 处理最大最小信息
+ ///
+ /// 信息
+ /// 缩放比
+ unsafe void HandleMinMaxInfo(ref MINMAXINFO info, double scalingFactor);
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs
index 8861026c..5c878657 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/IWindowOptionsSource.cs
@@ -1,8 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
-using Windows.Win32.UI.WindowsAndMessaging;
-
namespace Snap.Hutao.Core.Windowing;
///
@@ -14,11 +12,4 @@ internal interface IWindowOptionsSource
/// 窗体选项
///
WindowOptions WindowOptions { get; }
-
- ///
- /// 处理最大最小信息
- ///
- /// 信息指针
- /// 缩放比
- unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor);
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs
index 640c0a6f..14cc9297 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/WindowSubclass.cs
@@ -71,17 +71,16 @@ internal sealed class WindowSubclass : IDisposable
///
public void Dispose()
{
+ hotKeyController.Unregister(options.Hwnd);
+
RemoveWindowSubclass(options.Hwnd, windowProc, WindowSubclassId);
windowProc = null;
- if (!options.UseLegacyDragBarImplementation)
+ if (options.UseLegacyDragBarImplementation)
{
- return;
+ RemoveWindowSubclass(options.Hwnd, legacyDragBarProc, DragBarSubclassId);
+ legacyDragBarProc = null;
}
-
- hotKeyController.Unregister(options.Hwnd);
- RemoveWindowSubclass(options.Hwnd, legacyDragBarProc, DragBarSubclassId);
- legacyDragBarProc = null;
}
[SuppressMessage("", "SH002")]
@@ -91,16 +90,18 @@ internal sealed class WindowSubclass : IDisposable
{
case WM_GETMINMAXINFO:
{
- uint dpi = GetDpiForWindow(hwnd);
- double scalingFactor = Math.Round(dpi / 96D, 2, MidpointRounding.AwayFromZero);
- ((IWindowOptionsSource)window).ProcessMinMaxInfo((MINMAXINFO*)lParam.Value, scalingFactor);
+ if (window is IMinMaxInfoHandler handler)
+ {
+ handler.HandleMinMaxInfo(ref *(MINMAXINFO*)lParam.Value, options.GetWindowScale());
+ }
+
break;
}
case WM_NCRBUTTONDOWN:
case WM_NCRBUTTONUP:
{
- return (LRESULT)(nint)WM_NULL;
+ return default;
}
case WM_HOTKEY:
diff --git a/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs
index f477a883..82122e58 100644
--- a/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/GuideWindow.xaml.cs
@@ -11,7 +11,7 @@ namespace Snap.Hutao;
/// 指引窗口
///
[Injection(InjectAs.Singleton)]
-internal sealed partial class GuideWindow : Window, IWindowOptionsSource
+internal sealed partial class GuideWindow : Window, IWindowOptionsSource, IMinMaxInfoHandler
{
private const int MinWidth = 1000;
private const int MinHeight = 600;
@@ -30,11 +30,11 @@ internal sealed partial class GuideWindow : Window, IWindowOptionsSource
WindowOptions IWindowOptionsSource.WindowOptions { get => windowOptions; }
- public unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor)
+ public unsafe void HandleMinMaxInfo(ref MINMAXINFO info, double scalingFactor)
{
- pInfo->ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo->ptMinTrackSize.X);
- pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y);
- pInfo->ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, pInfo->ptMaxTrackSize.X);
- pInfo->ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, pInfo->ptMaxTrackSize.Y);
+ info.ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, info.ptMinTrackSize.X);
+ info.ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, info.ptMinTrackSize.Y);
+ info.ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, info.ptMaxTrackSize.X);
+ info.ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, info.ptMaxTrackSize.Y);
}
}
diff --git a/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs
index cba90226..43d75331 100644
--- a/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/LaunchGameWindow.xaml.cs
@@ -13,7 +13,7 @@ namespace Snap.Hutao;
///
[HighQuality]
[Injection(InjectAs.Singleton)]
-internal sealed partial class LaunchGameWindow : Window, IDisposable, IWindowOptionsSource
+internal sealed partial class LaunchGameWindow : Window, IDisposable, IWindowOptionsSource, IMinMaxInfoHandler
{
private const int MinWidth = 240;
private const int MinHeight = 240;
@@ -48,11 +48,11 @@ internal sealed partial class LaunchGameWindow : Window, IDisposable, IWindowOpt
}
///
- public unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor)
+ public unsafe void HandleMinMaxInfo(ref MINMAXINFO info, double scalingFactor)
{
- pInfo->ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo->ptMinTrackSize.X);
- pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y);
- pInfo->ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, pInfo->ptMaxTrackSize.X);
- pInfo->ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, pInfo->ptMaxTrackSize.Y);
+ info.ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, info.ptMinTrackSize.X);
+ info.ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, info.ptMinTrackSize.Y);
+ info.ptMaxTrackSize.X = (int)Math.Min(MaxWidth * scalingFactor, info.ptMaxTrackSize.X);
+ info.ptMaxTrackSize.Y = (int)Math.Min(MaxHeight * scalingFactor, info.ptMaxTrackSize.Y);
}
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs b/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs
index e49d951d..52532905 100644
--- a/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/MainWindow.xaml.cs
@@ -14,7 +14,7 @@ namespace Snap.Hutao;
[HighQuality]
[Injection(InjectAs.Singleton)]
[SuppressMessage("", "CA1001")]
-internal sealed partial class MainWindow : Window, IWindowOptionsSource
+internal sealed partial class MainWindow : Window, IWindowOptionsSource, IMinMaxInfoHandler
{
private const int MinWidth = 848;
private const int MinHeight = 524;
@@ -46,10 +46,10 @@ internal sealed partial class MainWindow : Window, IWindowOptionsSource
public WindowOptions WindowOptions { get => windowOptions; }
///
- public unsafe void ProcessMinMaxInfo(MINMAXINFO* pInfo, double scalingFactor)
+ public unsafe void HandleMinMaxInfo(ref MINMAXINFO pInfo, double scalingFactor)
{
- pInfo->ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo->ptMinTrackSize.X);
- pInfo->ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo->ptMinTrackSize.Y);
+ pInfo.ptMinTrackSize.X = (int)Math.Max(MinWidth * scalingFactor, pInfo.ptMinTrackSize.X);
+ pInfo.ptMinTrackSize.Y = (int)Math.Max(MinHeight * scalingFactor, pInfo.ptMinTrackSize.Y);
}
private void OnClosed(object sender, WindowEventArgs args)
diff --git a/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json b/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json
index a5fb2a14..36a6b395 100644
--- a/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json
+++ b/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"Snap.Hutao": {
"commandName": "MsixPackage",
- "nativeDebugging": false,
+ "nativeDebugging": true,
"doNotLaunchApp": false,
"allowLocalNetworkLoopbackProperty": true
},
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs
index e7a0ed68..b7d3178b 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/Unlocker/GameFpsUnlocker.cs
@@ -235,7 +235,7 @@ internal sealed class GameFpsUnlocker : IGameFpsUnlocker
using (localMemory)
{
- int offset = IndexOfPattern(localMemory.Span[(int)moduleEntryInfo.UnityPlayer.Size..]);
+ int offset = IndexOfPattern(localMemory.AsSpan()[(int)moduleEntryInfo.UnityPlayer.Size..]);
Must.Range(offset >= 0, SH.ServiceGameUnlockerInterestedPatternNotFound);
byte* pLocalMemory = (byte*)localMemory.Pointer;
diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj
index 96fc52e9..93573a54 100644
--- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj
+++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj
@@ -75,11 +75,16 @@
+
+
+
+
+
@@ -244,12 +249,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -258,8 +263,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -267,7 +272,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -308,6 +313,36 @@
+
+
+ MSBuild:Compile
+
+
+
+
+
+ MSBuild:Compile
+
+
+
+
+
+ MSBuild:Compile
+
+
+
+
+
+ MSBuild:Compile
+
+
+
+
+
+ MSBuild:Compile
+
+
+
MSBuild:Compile
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml
index b77f3fc6..be224ffb 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Card/GachaStatisticsCard.xaml
@@ -66,16 +66,16 @@
Description="{Binding LastOrangePull}"
Header="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
Maximum="{Binding GuaranteeOrangeThreshold}"
- ProgressForeground="{StaticResource OrangeBrush}"
- TextForeground="{StaticResource OrangeBrush}"
+ ProgressForeground="{StaticResource OrangeColorBrush}"
+ TextForeground="{StaticResource OrangeColorBrush}"
Value="{Binding LastOrangePull}"/>
@@ -98,16 +98,16 @@
Description="{Binding LastOrangePull}"
Header="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
Maximum="{Binding GuaranteeOrangeThreshold}"
- ProgressForeground="{StaticResource OrangeBrush}"
- TextForeground="{StaticResource OrangeBrush}"
+ ProgressForeground="{StaticResource OrangeColorBrush}"
+ TextForeground="{StaticResource OrangeColorBrush}"
Value="{Binding LastOrangePull}"/>
@@ -129,16 +129,16 @@
Description="{Binding LastOrangePull}"
Header="{shcm:ResourceString Name=ViewControlStatisticsCardOrangeText}"
Maximum="{Binding GuaranteeOrangeThreshold}"
- ProgressForeground="{StaticResource OrangeBrush}"
- TextForeground="{StaticResource OrangeBrush}"
+ ProgressForeground="{StaticResource OrangeColorBrush}"
+ TextForeground="{StaticResource OrangeColorBrush}"
Value="{Binding LastOrangePull}"/>
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml
index 33faaff1..7d7dccaa 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardBlock.xaml
@@ -6,7 +6,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:shch="using:Snap.Hutao.Control.Helper"
xmlns:shci="using:Snap.Hutao.Control.Image"
- Style="{StaticResource BorderGridStyle}"
+ Style="{ThemeResource GridCardStyle}"
mc:Ignorable="d">
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml
index d3fb37cf..8c622def 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Card/Primitive/CardProgressBar.xaml
@@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
MinHeight="40"
- Style="{StaticResource BorderGridStyle}"
+ Style="{ThemeResource GridCardStyle}"
mc:Ignorable="d">
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml b/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml
index 75365135..028c986f 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Control/HutaoStatisticsCard.xaml
@@ -26,7 +26,7 @@
-
+
@@ -36,7 +36,7 @@
Grid.Row="0"
cw:UIElementExtensions.ClipToBounds="True"
CornerRadius="{StaticResource ControlCornerRadiusTop}"
- Style="{StaticResource BorderGridStyle}">
+ Style="{ThemeResource GridCardStyle}">
-
+
@@ -59,13 +59,13 @@
@@ -103,7 +103,7 @@
-
+
@@ -181,8 +181,8 @@
Description="{Binding LastOrangePull}"
Header="{shcm:ResourceString Name=ViewControlStatisticsCardToLastOrangeText}"
Maximum="{Binding GuaranteeOrangeThreshold}"
- ProgressForeground="{StaticResource OrangeBrush}"
- TextForeground="{StaticResource OrangeBrush}"
+ ProgressForeground="{StaticResource OrangeColorBrush}"
+ TextForeground="{StaticResource OrangeColorBrush}"
Value="{Binding LastOrangePull}"/>
@@ -243,37 +243,37 @@
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml b/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml
index 7d0de834..71055f38 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/CultivatePromotionDeltaDialog.xaml
@@ -76,7 +76,7 @@
+ Style="{ThemeResource GridCardStyle}">
@@ -129,7 +129,7 @@
+ Style="{ThemeResource GridCardStyle}">
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml
index 35679ff6..8aef9263 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AvatarPropertyPage.xaml
@@ -314,7 +314,7 @@
HorizontalAlignment="Left">
-
+
@@ -636,7 +636,7 @@
Grid.Column="3"
Margin="8,0,0,0"
HorizontalAlignment="Left"
- Foreground="{StaticResource AvatarPropertyAddValueBrush}"
+ Foreground="{StaticResource AvatarPropertyAddValueColorBrush}"
Text="{Binding AddValue}"/>
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml
index cef97178..3ea16f55 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/DailyNotePage.xaml
@@ -193,7 +193,7 @@
-
+
@@ -284,7 +284,7 @@
Grid.Row="1"
Margin="0,8,0,0"
Spacing="6">
-
+
@@ -321,7 +321,7 @@
TextWrapping="NoWrap"/>
-
+
@@ -358,7 +358,7 @@
TextWrapping="NoWrap"/>
-
+
@@ -395,7 +395,7 @@
TextWrapping="NoWrap"/>
-
+
@@ -432,7 +432,7 @@
TextWrapping="NoWrap"/>
-
+
@@ -487,7 +487,7 @@
-
+
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml
index 7270a3d5..23a69bd9 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/SettingPage.xaml
@@ -21,7 +21,7 @@
-
+
-
+
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml
index 2d5b567b..10410981 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml
@@ -134,7 +134,7 @@
-
+
uint Size { get; }
-
- ///
- /// Gets a span of bytes from the current instance.
- ///
- Span Span { get; }
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/Memory/UnmanagedMemoryExtension.cs b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/UnmanagedMemoryExtension.cs
new file mode 100644
index 00000000..b8873ba8
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/UnmanagedMemoryExtension.cs
@@ -0,0 +1,12 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Win32.Memory;
+
+internal static class UnmanagedMemoryExtension
+{
+ public static unsafe Span AsSpan(this IUnmanagedMemory unmanagedMemory)
+ {
+ return new(unmanagedMemory.Pointer, (int)unmanagedMemory.Size);
+ }
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs
index 4b629e12..a0787a65 100644
--- a/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Win32/Memory/VirtualMemory.cs
@@ -7,7 +7,7 @@ using static Windows.Win32.PInvoke;
namespace Snap.Hutao.Win32.Memory;
///
-/// NativeMemory.AllocZeroed wrapper
+/// VirtualAlloc wrapper
///
internal readonly unsafe struct VirtualMemory : IUnmanagedMemory
{
@@ -38,9 +38,6 @@ internal readonly unsafe struct VirtualMemory : IUnmanagedMemory
///
public uint Size { get => size; }
- ///
- public Span Span { get => new(pointer, (int)size); }
-
///
public void Dispose()
{