Skip to content

Commit 52c2df8

Browse files
committed
WPF 支持使用软件渲染
1 parent ee68e57 commit 52c2df8

File tree

8 files changed

+80
-19
lines changed

8 files changed

+80
-19
lines changed

src/ComputerLock/App.xaml.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ private void Init()
6767
services.AddWpfTitleBarKit();
6868
services.AddLocalization();
6969
services.AddWpfBlazorWebView();
70-
services.AddBlazorWebViewDeveloperTools();
7170
services.AddMudServices(config =>
7271
{
7372
config.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.TopLeft;
@@ -87,6 +86,11 @@ private void Init()
8786
Thread.CurrentThread.CurrentCulture = cultureInfo;
8887
Thread.CurrentThread.CurrentUICulture = cultureInfo;
8988

89+
if (sp.GetRequiredService<AppSettings>().IsEnableSoftwareRendering)
90+
{
91+
System.Windows.Media.RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
92+
}
93+
9094
_mainWindow = sp.GetRequiredService<WindowMain>();
9195
Application.Current.MainWindow = _mainWindow;
9296
_mainWindow.Show();

src/ComputerLock/Components/Settings/GeneralSettings.razor

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@
2424
Color="Color.Primary"
2525
Style="max-width: fit-content;" />
2626

27+
<div class="d-flex flex-column">
28+
<MudCheckBox T="bool"
29+
Value="@(AppSettings.IsEnableSoftwareRendering)"
30+
ValueChanged="SoftwareRenderingChange"
31+
Label="@(Lang["EnableSoftwareRendering"])"
32+
Color="Color.Primary"
33+
Style="max-width: fit-content;" />
34+
<MudText Typo="Typo.caption" Color="Color.Secondary" Class="ml-12">
35+
@(Lang["EnableSoftwareRenderingRemark"])
36+
</MudText>
37+
</div>
38+
2739
<MudSelect T="ThemeEnum"
2840
Class="mt-4"
2941
Dense="true"
@@ -53,19 +65,6 @@
5365

5466
<div class="d-flex align-center">
5567
<MudText Typo="Typo.subtitle2">@(Lang["LogFiles"])</MudText>
56-
@if (_logLoadingOk)
57-
{
58-
<MudChip T="string"
59-
Label="true"
60-
Disabled="true"
61-
Variant="Variant.Text"
62-
Color="Color.Secondary"
63-
Size="Size.Small">
64-
@($"{_logFilesSize / 1024 / 1024:N2} MB")
65-
</MudChip>
66-
}
67-
</div>
68-
<div class="d-flex align-center">
6968
@if (!_logLoadingOk)
7069
{
7170
<MudProgressCircular Color="Color.Secondary"
@@ -75,6 +74,15 @@
7574
}
7675
else
7776
{
77+
<MudChip T="string"
78+
Label="true"
79+
Disabled="true"
80+
Variant="Variant.Text"
81+
Color="Color.Secondary"
82+
Size="Size.Small">
83+
@($"{_logFilesSize / 1024 / 1024:N2} MB")
84+
</MudChip>
85+
7886
<MudButton Variant="Variant.Text"
7987
Color="Color.Primary"
8088
Size="Size.Small"
@@ -90,9 +98,9 @@
9098

9199
<div class="d-flex align-center">
92100
<MudText Typo="Typo.subtitle2">@(Lang["Advanced"])</MudText>
101+
<MudButton Class="ml-2"
102+
Variant="Variant.Text"
103+
Color="Color.Error"
104+
Size="Size.Small"
105+
OnClick="ResetSettingsAsync">@(Lang["ResetSettings"])</MudButton>
93106
</div>
94-
<MudButton Class="mt-2"
95-
Variant="Variant.Text"
96-
Color="Color.Error"
97-
Size="Size.Small"
98-
OnClick="ResetSettingsAsync">@(Lang["ResetSettings"])</MudButton>

src/ComputerLock/Components/Settings/GeneralSettings.razor.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,14 @@ private void AutostartChange(bool isChecked)
4444
}
4545
_isAutostart = AutostartHook.IsAutostart();
4646
}
47+
48+
private void SoftwareRenderingChange(bool isChecked)
49+
{
50+
AppSettings.IsEnableSoftwareRendering = isChecked;
51+
SaveSettings();
52+
RestartTips();
53+
}
54+
4755
private void SaveSettings()
4856
{
4957
AppSettingsProvider.SaveSettings(AppSettings);

src/ComputerLock/Configuration/AppSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,9 @@ public void Initialize(HotkeyTools hotkeyTools)
145145
/// 锁屏状态展示
146146
/// </summary>
147147
public LockStatusDisplay LockStatusDisplay { get; set; } = LockStatusDisplay.None;
148+
149+
/// <summary>
150+
/// 启用软件渲染
151+
/// </summary>
152+
public bool IsEnableSoftwareRendering { get; set; } = true;
148153
}

src/ComputerLock/Resources/Lang.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ComputerLock/Resources/Lang.en.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,4 +366,10 @@
366366
<data name="HideWindowWhenEsc" xml:space="preserve">
367367
<value>Minimize to tray on pressing ESC</value>
368368
</data>
369+
<data name="EnableSoftwareRendering" xml:space="preserve">
370+
<value>Enable Software Rendering</value>
371+
</data>
372+
<data name="EnableSoftwareRenderingRemark" xml:space="preserve">
373+
<value>Reduces memory usage when enabled, but may affect animation smoothness.</value>
374+
</data>
369375
</root>

src/ComputerLock/Resources/Lang.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,4 +384,10 @@
384384
<data name="HideWindowWhenEsc" xml:space="preserve">
385385
<value />
386386
</data>
387+
<data name="EnableSoftwareRendering" xml:space="preserve">
388+
<value />
389+
</data>
390+
<data name="EnableSoftwareRenderingRemark" xml:space="preserve">
391+
<value />
392+
</data>
387393
</root>

src/ComputerLock/Resources/Lang.zh.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,4 +363,10 @@
363363
<data name="HideWindowWhenEsc" xml:space="preserve">
364364
<value>按下 ESC 键后最小化到托盘</value>
365365
</data>
366+
<data name="EnableSoftwareRendering" xml:space="preserve">
367+
<value>启用软件渲染</value>
368+
</data>
369+
<data name="EnableSoftwareRenderingRemark" xml:space="preserve">
370+
<value>启用时可减少内存占用,但可能影响动画流畅性</value>
371+
</data>
366372
</root>

0 commit comments

Comments
 (0)