添加项目文件。

This commit is contained in:
huiyiruciduojiao
2023-09-26 15:31:52 +08:00
committed by huiyiruciduojiao
parent 34cef0e395
commit d351e442ab
4057 changed files with 140650 additions and 0 deletions

4
.editorconfig Normal file
View File

@@ -0,0 +1,4 @@
[*.cs]
# IDE0059: 不需要赋值
csharp_style_unused_value_assignment_preference = unused_local_variable

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

3
.vs/ProjectSettings.json Normal file
View File

@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

12
.vs/VSWorkspaceState.json Normal file
View File

@@ -0,0 +1,12 @@
{
"ExpandedNodes": [
"",
"\\AudioVisualizer",
"\\AudioVisualizer\\Resources",
"\\LibAudioVisualizer",
"\\LibDynamics",
"\\WpfAudioVisualizer"
],
"SelectedNode": "\\AudioVisualizer\\ConfigurationObject.cs",
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

107
AudioVisualizer.sln Normal file
View File

@@ -0,0 +1,107 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32929.385
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WpfAudioVisualizer", "WpfAudioVisualizer\WpfAudioVisualizer.csproj", "{459FE289-A8E1-4BEC-9113-FC42B9CE9436}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibAudioVisualizer", "LibAudioVisualizer\LibAudioVisualizer.csproj", "{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AudioVisualizerDx", "AudioVisualizerDx\AudioVisualizerDx.csproj", "{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F54E0AE6-96AB-42EA-AFD1-37F1BCBAD304}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
readme.md = readme.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AudioVisualizerGL", "AudioVisualizerGL\AudioVisualizerGL.csproj", "{EC24D98A-2776-400D-8494-7B8C954EAF84}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AudioVisualizerDxDesktop", "AudioVisualizerDxDesktop\AudioVisualizerDxDesktop.csproj", "{4398D445-4BE7-4671-83C1-BA7320BEF1EE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibDynamics", "LibDynamics\LibDynamics.csproj", "{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AudioWallpaperManager", "AudioWallpaperManager\AudioWallpaperManager.csproj", "{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AudioWallpaper", "AudioVisualizer\AudioWallpaper.csproj", "{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Debug|Any CPU.Build.0 = Debug|Any CPU
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Debug|x64.ActiveCfg = Debug|x64
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Debug|x64.Build.0 = Debug|x64
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Release|Any CPU.ActiveCfg = Release|Any CPU
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Release|Any CPU.Build.0 = Release|Any CPU
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Release|x64.ActiveCfg = Release|x64
{459FE289-A8E1-4BEC-9113-FC42B9CE9436}.Release|x64.Build.0 = Release|x64
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Debug|Any CPU.Build.0 = Debug|Any CPU
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Debug|x64.ActiveCfg = Debug|x64
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Debug|x64.Build.0 = Debug|x64
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Release|Any CPU.Build.0 = Release|Any CPU
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Release|x64.ActiveCfg = Release|x64
{15A2D4B9-BD52-411F-96E9-2BFACFEC4579}.Release|x64.Build.0 = Release|x64
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Debug|x64.ActiveCfg = Debug|x64
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Debug|x64.Build.0 = Debug|x64
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Release|Any CPU.Build.0 = Release|Any CPU
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Release|x64.ActiveCfg = Release|x64
{20B17F7E-11C3-4E46-9E79-DE9A3B25B640}.Release|x64.Build.0 = Release|x64
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Debug|x64.ActiveCfg = Debug|x64
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Debug|x64.Build.0 = Debug|x64
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Release|Any CPU.Build.0 = Release|Any CPU
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Release|x64.ActiveCfg = Release|x64
{EC24D98A-2776-400D-8494-7B8C954EAF84}.Release|x64.Build.0 = Release|x64
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Debug|x64.ActiveCfg = Debug|x64
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Debug|x64.Build.0 = Debug|x64
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Release|Any CPU.Build.0 = Release|Any CPU
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Release|x64.ActiveCfg = Release|x64
{4398D445-4BE7-4671-83C1-BA7320BEF1EE}.Release|x64.Build.0 = Release|x64
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Debug|x64.ActiveCfg = Debug|x64
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Debug|x64.Build.0 = Debug|x64
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Release|Any CPU.Build.0 = Release|Any CPU
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Release|x64.ActiveCfg = Release|x64
{F31F51C2-25D8-4AF1-891C-01087BB7E5EC}.Release|x64.Build.0 = Release|x64
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Debug|x64.ActiveCfg = Debug|x64
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Debug|x64.Build.0 = Debug|x64
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Release|Any CPU.Build.0 = Release|Any CPU
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Release|x64.ActiveCfg = Release|x64
{E77BF32B-9AEF-4BE3-A1BD-4A13533E02B5}.Release|x64.Build.0 = Release|x64
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Debug|x64.ActiveCfg = Debug|x64
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Debug|x64.Build.0 = Debug|x64
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Release|Any CPU.Build.0 = Release|Any CPU
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Release|x64.ActiveCfg = Release|x64
{4DFEE2A6-2CE7-4A35-A2A9-0EF33D32F6FE}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5339D678-7325-4FD8-A49D-47B54E59D8E6}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,57 @@
using System.Runtime.InteropServices;
using static AudioWallpaper.Win32;
namespace AudioWallpaper {
public class AppBarManager {
private const int ABM_NEW = 0x00000000;
private const int ABM_REMOVE = 0x00000001;
private const int ABM_QUERYPOS = 0x00000002;
private const int ABM_SETPOS = 0x00000003;
private const int ABM_GETSTATE = 0x00000004;
private const int ABM_GETTASKBARPOS = 0x00000005;
private const int ABM_ACTIVATE = 0x00000006;
private const int ABM_GETAUTOHIDEBAR = 0x00000007;
private const int ABM_SETAUTOHIDEBAR = 0x00000008;
private const int ABM_WINDOWPOSCHANGED = 0x00000009;
private const int ABM_SETSTATE = 0x0000000A;
private const int ABS_AUTOHIDE = 0x0000001;
private const int ABS_ALWAYSONTOP = 0x0000002;
private const int ABN_STATECHANGE = 0x0000000;
private const int ABN_POSCHANGED = 0x0000001;
public const int ABN_FULLSCREENAPP = 0x0000002;
private const int ABN_WINDOWARRANGE = 0x0000003;
private IntPtr hWnd;
public uint uCallbackMessage;
public AppBarManager(IntPtr hWnd) {
this.hWnd = hWnd;
uCallbackMessage = RegisterCallbackMessage();
APPBARDATA abd = new APPBARDATA();
abd.cbSize = Marshal.SizeOf(typeof(APPBARDATA));
abd.hWnd = hWnd;
abd.uCallbackMessage = uCallbackMessage;
SHAppBarMessage(ABM_NEW, ref abd);
}
public void Dispose() {
APPBARDATA abd = new APPBARDATA();
abd.cbSize = Marshal.SizeOf(typeof(APPBARDATA));
abd.hWnd = hWnd;
SHAppBarMessage(ABM_REMOVE, ref abd);
}
public uint RegisterCallbackMessage() {
// 注册一个自定义的消息编号用于AppBar消息
string uniqueMessageString = "AppBarMessage" + Guid.NewGuid().ToString();
return RegisterWindowMessage(uniqueMessageString);
}
}
}

View File

@@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>FM-channel.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Content Include="FM-channel.ico" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NAudio" Version="2.1.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LibAudioVisualizer\LibAudioVisualizer.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,52 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.17763.0</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>FM-channel.ico</ApplicationIcon>
<ApplicationManifest>app.manifest</ApplicationManifest>
<AssemblyVersion>1.2.2</AssemblyVersion>
<FileVersion>1.2.2</FileVersion>
<Version>1.2.2</Version>
<Platforms>AnyCPU;x64</Platforms>
<RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
<Nowarn>$(Nowarn);SYSLIB0011</Nowarn>
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
<SupportedOSPlatformVersion>10.0.17763.0</SupportedOSPlatformVersion>
</PropertyGroup>
<ItemGroup>
<Content Include="FM-channel.ico" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="LibVLCSharp.WinForms" Version="3.8.2" />
<PackageReference Include="NAudio" Version="2.2.1" />
<PackageReference Include="System.Management" Version="8.0.0" />
<PackageReference Include="VideoLAN.LibVLC.Windows" Version="3.0.20" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LibAudioVisualizer\LibAudioVisualizer.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_LastSelectedProfileId>H:\S1\C#\AudioVisualizer\AudioVisualizer\Properties\PublishProfiles\默认win10 64 依赖框架.pubxml</_LastSelectedProfileId>
</PropertyGroup>
<ItemGroup>
<Compile Update="MainWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="MyPanel.cs">
<SubType>Component</SubType>
</Compile>
<Compile Update="SetForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="VersionInformationForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="VideoWallpaperWindow.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,159 @@
using AudioWallpaper;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioVisualizer {
public class ConfigurationObject {
/// <summary>
/// 律动默认激进倍率
/// </summary>
public float DefaultRadical = 2f;
/// <summary>
/// 默认频谱偏移量
/// </summary>
public float DefaultOffset = 0.4f;
/// <summary>
/// 默认傅里叶变化量
/// </summary>
public int DefaultFourierVariation = 512;
/// <summary>
/// 默认颜色
/// </summary>
public Color DefaultColor = Color.Blue;
/// <summary>
/// 默认停止颜色
/// </summary>
public Color DefaultStopColor = Color.Red;
/// <summary>
/// 是否使用系统默认颜色
/// </summary>
public bool UseDefaultColorOrNOt = true;
/// <summary>
/// 默认颜色数量
/// </summary>
public int NumberOfColors = 256;
/// <summary>
/// 是否单色显示
/// </summary>
public bool MonochromeOrNot = false;
/// <summary>
/// 默认背景颜色
/// </summary>
public Color BackgroundColor = Color.Black;
/// <summary>
/// 是否使用背景图
/// </summary>
public bool BackImgOrNot = false;
/// <summary>
/// 背景图片地址
/// </summary>
public String? BackgroundImagePath = null;
/// <summary>
/// 是否画出波浪线
/// </summary>
public bool WavyLine = true;
/// <summary>
/// 是否画出边框
/// </summary>
public bool Frame = true;
/// <summary>
/// 是否画出中间圆形
/// </summary>
public bool Rotundity = true;
/// <summary>
/// 是否画出底边条形
/// </summary>
public bool Stripe = true;
public String DefaultConfiguration = "DefaultConfiguration";
public bool SaveConfiguration(String configFilePath) {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
#region
//默认律动激进倍率
configurationTools.AddSetting(DefaultConfiguration, "DefaultRadical", DefaultRadical.ToString());
//默认频谱偏移量
configurationTools.AddSetting(DefaultConfiguration, "DefaultOffset", DefaultOffset.ToString());
//默认傅里叶变化量
configurationTools.AddSetting(DefaultConfiguration, "DefaultFourierVariation", DefaultFourierVariation.ToString());
//默认开始颜色
configurationTools.AddSetting(DefaultConfiguration, "DefaultColor", ColorTranslator.ToHtml(DefaultColor));
//默认停止颜色
configurationTools.AddSetting(DefaultConfiguration, "DefaultStopColor", ColorTranslator.ToHtml(DefaultStopColor));
//是否使用默认颜色
configurationTools.AddSetting(DefaultConfiguration, "UseDefaultColorOrNOt", UseDefaultColorOrNOt.ToString());
//颜色数量
configurationTools.AddSetting(DefaultConfiguration, "NumberOfColors", NumberOfColors.ToString());
//是否单色显示
configurationTools.AddSetting(DefaultConfiguration, "MonochromeOrNot", MonochromeOrNot.ToString());
//默认背景颜色
configurationTools.AddSetting(DefaultConfiguration, "BackgroundColor", ColorTranslator.ToHtml(BackgroundColor));
//是否使用背景图
configurationTools.AddSetting(DefaultConfiguration, "BackImgOrNot", BackImgOrNot.ToString());
//背景图地址
configurationTools.AddSetting(DefaultConfiguration, "BackgroundImagePath", BackgroundImagePath);
//是否画出波浪线
configurationTools.AddSetting(DefaultConfiguration, "WavyLine", WavyLine.ToString());
//是否画出边框
configurationTools.AddSetting(DefaultConfiguration, "Frame", Frame.ToString());
//是否画出中间圆形
configurationTools.AddSetting(DefaultConfiguration, "Rotundity", Rotundity.ToString());
//是否画出底边条形
configurationTools.AddSetting(DefaultConfiguration, "Stripe", Stripe.ToString());
#endregion
//保存配置
configurationTools.SaveSettings();
return true;
}
public ConfigurationObject LoadConfiguration(String configFilePath) {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
#region
try {
//默认律动激进倍率
DefaultRadical = float.Parse(configurationTools.GetSetting(DefaultConfiguration, "DefaultRadical"));
//默认频谱偏移量
DefaultOffset = float.Parse(configurationTools.GetSetting(DefaultConfiguration, "DefaultOffset"));
//默认傅里叶变化量
DefaultFourierVariation = int.Parse(configurationTools.GetSetting(DefaultConfiguration, "DefaultFourierVariation"));
//默认颜色
DefaultColor = ColorTranslator.FromHtml(configurationTools.GetSetting(DefaultConfiguration, "DefaultColor"));
//默认停止颜色
DefaultStopColor = ColorTranslator.FromHtml(configurationTools.GetSetting(DefaultConfiguration, "DefaultStopColor"));
//是否使用默认颜色
UseDefaultColorOrNOt = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "UseDefaultColorOrNOt"));
//颜色数量
NumberOfColors = int.Parse(configurationTools.GetSetting(DefaultConfiguration, "NumberOfColors"));
//是否单色显示
MonochromeOrNot = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "MonochromeOrNot"));
//默认背景颜色
BackgroundColor = ColorTranslator.FromHtml(configurationTools.GetSetting(DefaultConfiguration, "BackgroundColor"));
//是否使用背景图
BackImgOrNot = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "BackImgOrNot"));
//背景图地址
BackgroundImagePath = configurationTools.GetSetting(DefaultConfiguration, "BackgroundImagePath");
//是否画出波浪线
WavyLine = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "WavyLine"));
//是否画出边框
Frame = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "Frame"));
//是否画出中间圆形
Rotundity = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "Rotundity"));
//是否画出底边条形
Stripe = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "Stripe"));
#endregion
} catch (Exception) {
}
return this;
}
}
}

View File

@@ -0,0 +1,163 @@
<<<<<<< HEAD
using AudioWallpaper;
using System;
=======
using System;
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioVisualizer {
public class ConfigurationObject {
/// <summary>
/// 律动默认激进倍率
/// </summary>
public float DefaultRadical = 2f;
/// <summary>
/// 默认频谱偏移量
/// </summary>
public float DefaultOffset = 0.4f;
/// <summary>
/// 默认傅里叶变化量
/// </summary>
public int DefaultFourierVariation = 512;
/// <summary>
/// 默认颜色
/// </summary>
public Color DefaultColor = Color.Blue;
/// <summary>
/// 默认停止颜色
/// </summary>
public Color DefaultStopColor = Color.Red;
/// <summary>
/// 是否使用系统默认颜色
/// </summary>
public bool UseDefaultColorOrNOt = true;
/// <summary>
/// 默认颜色数量
/// </summary>
public int NumberOfColors = 256;
/// <summary>
/// 是否单色显示
/// </summary>
public bool MonochromeOrNot = false;
/// <summary>
/// 默认背景颜色
/// </summary>
public Color BackgroundColor = Color.Black;
/// <summary>
/// 是否使用背景图
/// </summary>
public bool BackImgOrNot = false;
/// <summary>
/// 背景图片地址
/// </summary>
public String? BackgroundImagePath = null;
/// <summary>
/// 是否画出波浪线
/// </summary>
public bool WavyLine = true;
/// <summary>
/// 是否画出边框
/// </summary>
public bool Frame = true;
/// <summary>
/// 是否画出中间圆形
/// </summary>
public bool Rotundity = true;
/// <summary>
/// 是否画出底边条形
/// </summary>
public bool Stripe = true;
public String DefaultConfiguration = "DefaultConfiguration";
public bool SaveConfiguration(String configFilePath) {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
#region
//默认律动激进倍率
configurationTools.AddSetting(DefaultConfiguration, "DefaultRadical", DefaultRadical.ToString());
//默认频谱偏移量
configurationTools.AddSetting(DefaultConfiguration, "DefaultOffset", DefaultOffset.ToString());
//默认傅里叶变化量
configurationTools.AddSetting(DefaultConfiguration, "DefaultFourierVariation", DefaultFourierVariation.ToString());
//默认开始颜色
configurationTools.AddSetting(DefaultConfiguration, "DefaultColor", ColorTranslator.ToHtml(DefaultColor));
//默认停止颜色
configurationTools.AddSetting(DefaultConfiguration, "DefaultStopColor", ColorTranslator.ToHtml(DefaultStopColor));
//是否使用默认颜色
configurationTools.AddSetting(DefaultConfiguration, "UseDefaultColorOrNOt", UseDefaultColorOrNOt.ToString());
//颜色数量
configurationTools.AddSetting(DefaultConfiguration, "NumberOfColors", NumberOfColors.ToString());
//是否单色显示
configurationTools.AddSetting(DefaultConfiguration, "MonochromeOrNot", MonochromeOrNot.ToString());
//默认背景颜色
configurationTools.AddSetting(DefaultConfiguration, "BackgroundColor", ColorTranslator.ToHtml(BackgroundColor));
//是否使用背景图
configurationTools.AddSetting(DefaultConfiguration, "BackImgOrNot", BackImgOrNot.ToString());
//背景图地址
configurationTools.AddSetting(DefaultConfiguration, "BackgroundImagePath", BackgroundImagePath);
//是否画出波浪线
configurationTools.AddSetting(DefaultConfiguration, "WavyLine", WavyLine.ToString());
//是否画出边框
configurationTools.AddSetting(DefaultConfiguration, "Frame", Frame.ToString());
//是否画出中间圆形
configurationTools.AddSetting(DefaultConfiguration, "Rotundity", Rotundity.ToString());
//是否画出底边条形
configurationTools.AddSetting(DefaultConfiguration, "Stripe", Stripe.ToString());
#endregion
//保存配置
configurationTools.SaveSettings();
return true;
}
public ConfigurationObject LoadConfiguration(String configFilePath) {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
#region
try {
//默认律动激进倍率
DefaultRadical = float.Parse(configurationTools.GetSetting(DefaultConfiguration, "DefaultRadical"));
//默认频谱偏移量
DefaultOffset = float.Parse(configurationTools.GetSetting(DefaultConfiguration, "DefaultOffset"));
//默认傅里叶变化量
DefaultFourierVariation = int.Parse(configurationTools.GetSetting(DefaultConfiguration, "DefaultFourierVariation"));
//默认颜色
DefaultColor = ColorTranslator.FromHtml(configurationTools.GetSetting(DefaultConfiguration, "DefaultColor"));
//默认停止颜色
DefaultStopColor = ColorTranslator.FromHtml(configurationTools.GetSetting(DefaultConfiguration, "DefaultStopColor"));
//是否使用默认颜色
UseDefaultColorOrNOt = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "UseDefaultColorOrNOt"));
//颜色数量
NumberOfColors = int.Parse(configurationTools.GetSetting(DefaultConfiguration, "NumberOfColors"));
//是否单色显示
MonochromeOrNot = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "MonochromeOrNot"));
//默认背景颜色
BackgroundColor = ColorTranslator.FromHtml(configurationTools.GetSetting(DefaultConfiguration, "BackgroundColor"));
//是否使用背景图
BackImgOrNot = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "BackImgOrNot"));
//背景图地址
BackgroundImagePath = configurationTools.GetSetting(DefaultConfiguration, "BackgroundImagePath");
//是否画出波浪线
WavyLine = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "WavyLine"));
//是否画出边框
Frame = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "Frame"));
//是否画出中间圆形
Rotundity = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "Rotundity"));
//是否画出底边条形
Stripe = Convert.ToBoolean(configurationTools.GetSetting(DefaultConfiguration, "Stripe"));
#endregion
} catch (Exception) {
}
return this;
}
}
}

View File

@@ -0,0 +1,162 @@
using System.Collections;
namespace AudioWallpaper {
public class ConfigurationTools {
private Hashtable keyPairs = new Hashtable();
private String iniFilePath;
private struct SectionPair {
public String Section;
public String Key;
}
/// <summary>
/// 在给定的路径上打开INI文件并枚举IniParser中的值。
/// </summary>
/// <param name="iniPath">Full path to INI file.</param>
public ConfigurationTools(String iniPath) {
TextReader iniFile = null;
String strLine = null;
String currentRoot = null;
String[] keyPair = null;
iniFilePath = iniPath;
if (File.Exists(iniPath)) {
try {
iniFile = new StreamReader(iniPath);
strLine = iniFile.ReadLine();
while (strLine != null) {
strLine = strLine.Trim().ToUpper();
if (strLine != "") {
if (strLine.StartsWith("[") && strLine.EndsWith("]")) {
currentRoot = strLine.Substring(1, strLine.Length - 2);
} else {
keyPair = strLine.Split(new char[] { '=' }, 2);
SectionPair sectionPair;
String value = null;
if (currentRoot == null)
currentRoot = "ROOT";
sectionPair.Section = currentRoot;
sectionPair.Key = keyPair[0];
if (keyPair.Length > 1)
value = keyPair[1];
keyPairs.Add(sectionPair, value);
}
}
strLine = iniFile.ReadLine();
}
} catch (Exception ex) {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
} finally {
if (iniFile != null)
iniFile.Close();
}
}
}
/// <summary>
/// 返回给定section的值key对。
/// </summary>
/// <param name="sectionName">Section name</param>
/// <param name="settingName">Key name</param>
public String GetSetting(String sectionName, String settingName) {
SectionPair sectionPair;
sectionPair.Section = sectionName.ToUpper();
sectionPair.Key = settingName.ToUpper();
return (String)keyPairs[sectionPair];
}
/// <summary>
/// 列出给定的Section的所有行
/// </summary>
/// <param name="sectionName">Section to enum.</param>
public String[] EnumSection(String sectionName) {
ArrayList tmpArray = new ArrayList();
foreach (SectionPair pair in keyPairs.Keys) {
if (pair.Section == sectionName.ToUpper())
tmpArray.Add(pair.Key);
}
return (String[])tmpArray.ToArray(typeof(String));
}
/// <summary>
/// 向要保存的表添加或替换设置。
/// </summary>
/// <param name="sectionName">Section to add under.</param>
/// <param name="settingName">Key name to add.</param>
/// <param name="settingValue">Value of key.</param>
public void AddSetting(String sectionName, String settingName, String settingValue) {
SectionPair sectionPair;
sectionPair.Section = sectionName.ToUpper();
sectionPair.Key = settingName.ToUpper();
if (keyPairs.ContainsKey(sectionPair))
keyPairs.Remove(sectionPair);
keyPairs.Add(sectionPair, settingValue);
}
/// <summary>
/// 向要保存的表添加或替换设置,提供复写内容是否为大写
/// </summary>
/// <param name="sectionName">Section to add under.</param>
/// <param name="settingName">Key name to add.</param>
/// <param name="settingValue">Value of key.</param>
/// <param name="isUpper">Value is upper . true:upper;false do not change</param>
public void AddSetting(String sectionName, String settingName, String settingValue, bool isUpper) {
SectionPair pair;
pair.Section = sectionName.ToUpper();
}
/// <summary>
/// 用空值添加或替换要保存的表的设置。
/// </summary>
/// <param name="sectionName">Section</param>
/// <param name="settingName">Key</param>
public void AddSetting(String sectionName, String settingName) {
AddSetting(sectionName, settingName, null);
}
/// <summary>
/// 删除设置
/// </summary>
/// <param name="sectionName">指定Section</param>
/// <param name="settingName">添加的Key</param>
public void DeleteSetting(String sectionName, String settingName) {
SectionPair sectionPair;
sectionPair.Section = sectionName.ToUpper();
sectionPair.Key = settingName.ToUpper();
if (keyPairs.ContainsKey(sectionPair))
keyPairs.Remove(sectionPair);
}
/// <summary>
/// 保存设置到新文件。
/// </summary>
/// <param name="newFilePath">新的文件路径。</param>
public void SaveSettings(String newFilePath) {
ArrayList sections = new ArrayList();
String tmpValue = "";
String strToSave = "";
foreach (SectionPair sectionPair in keyPairs.Keys) {
if (!sections.Contains(sectionPair.Section))
sections.Add(sectionPair.Section);
}
foreach (String section in sections) {
strToSave += ("[" + section + "]\r\n");
foreach (SectionPair sectionPair in keyPairs.Keys) {
if (sectionPair.Section == section) {
tmpValue = (String)keyPairs[sectionPair];
if (tmpValue != null)
tmpValue = "=" + tmpValue;
strToSave += (sectionPair.Key + tmpValue + "\r\n");
}
}
strToSave += "\r\n";
}
try {
TextWriter tw = new StreamWriter(newFilePath);
tw.Write(strToSave);
tw.Close();
} catch (Exception ex) {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 将设置保存回ini文件。
/// </summary>
public void SaveSettings() {
SaveSettings(iniFilePath);
}
}
}

View File

@@ -0,0 +1,174 @@
<<<<<<< HEAD
using System.Collections;
namespace AudioWallpaper {
=======
using System;
using System.Collections;
using System.IO;
using System.Windows.Forms;
namespace AudioVisualizer {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
public class ConfigurationTools {
private Hashtable keyPairs = new Hashtable();
private String iniFilePath;
private struct SectionPair {
public String Section;
public String Key;
}
/// <summary>
/// 在给定的路径上打开INI文件并枚举IniParser中的值。
/// </summary>
/// <param name="iniPath">Full path to INI file.</param>
public ConfigurationTools(String iniPath) {
TextReader iniFile = null;
String strLine = null;
String currentRoot = null;
String[] keyPair = null;
iniFilePath = iniPath;
if (File.Exists(iniPath)) {
try {
iniFile = new StreamReader(iniPath);
strLine = iniFile.ReadLine();
while (strLine != null) {
strLine = strLine.Trim().ToUpper();
if (strLine != "") {
if (strLine.StartsWith("[") && strLine.EndsWith("]")) {
currentRoot = strLine.Substring(1, strLine.Length - 2);
} else {
keyPair = strLine.Split(new char[] { '=' }, 2);
SectionPair sectionPair;
String value = null;
if (currentRoot == null)
currentRoot = "ROOT";
sectionPair.Section = currentRoot;
sectionPair.Key = keyPair[0];
if (keyPair.Length > 1)
value = keyPair[1];
keyPairs.Add(sectionPair, value);
}
}
strLine = iniFile.ReadLine();
}
} catch (Exception ex) {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
} finally {
if (iniFile != null)
iniFile.Close();
}
}
}
/// <summary>
/// 返回给定section的值key对。
/// </summary>
/// <param name="sectionName">Section name</param>
/// <param name="settingName">Key name</param>
public String GetSetting(String sectionName, String settingName) {
SectionPair sectionPair;
sectionPair.Section = sectionName.ToUpper();
sectionPair.Key = settingName.ToUpper();
return (String)keyPairs[sectionPair];
}
/// <summary>
/// 列出给定的Section的所有行
/// </summary>
/// <param name="sectionName">Section to enum.</param>
public String[] EnumSection(String sectionName) {
ArrayList tmpArray = new ArrayList();
foreach (SectionPair pair in keyPairs.Keys) {
if (pair.Section == sectionName.ToUpper())
tmpArray.Add(pair.Key);
}
return (String[])tmpArray.ToArray(typeof(String));
}
/// <summary>
/// 向要保存的表添加或替换设置。
/// </summary>
/// <param name="sectionName">Section to add under.</param>
/// <param name="settingName">Key name to add.</param>
/// <param name="settingValue">Value of key.</param>
public void AddSetting(String sectionName, String settingName, String settingValue) {
SectionPair sectionPair;
sectionPair.Section = sectionName.ToUpper();
sectionPair.Key = settingName.ToUpper();
if (keyPairs.ContainsKey(sectionPair))
keyPairs.Remove(sectionPair);
keyPairs.Add(sectionPair, settingValue);
}
/// <summary>
<<<<<<< HEAD
/// 向要保存的表添加或替换设置,提供复写内容是否为大写
/// </summary>
/// <param name="sectionName">Section to add under.</param>
/// <param name="settingName">Key name to add.</param>
/// <param name="settingValue">Value of key.</param>
/// <param name="isUpper">Value is upper . true:upper;false do not change</param>
public void AddSetting(String sectionName, String settingName, String settingValue, bool isUpper) {
SectionPair pair;
pair.Section = sectionName.ToUpper();
}
/// <summary>
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
/// 用空值添加或替换要保存的表的设置。
/// </summary>
/// <param name="sectionName">Section</param>
/// <param name="settingName">Key</param>
public void AddSetting(String sectionName, String settingName) {
AddSetting(sectionName, settingName, null);
}
/// <summary>
/// 删除设置
/// </summary>
/// <param name="sectionName">指定Section</param>
/// <param name="settingName">添加的Key</param>
public void DeleteSetting(String sectionName, String settingName) {
SectionPair sectionPair;
sectionPair.Section = sectionName.ToUpper();
sectionPair.Key = settingName.ToUpper();
if (keyPairs.ContainsKey(sectionPair))
keyPairs.Remove(sectionPair);
}
/// <summary>
/// 保存设置到新文件。
/// </summary>
/// <param name="newFilePath">新的文件路径。</param>
public void SaveSettings(String newFilePath) {
ArrayList sections = new ArrayList();
String tmpValue = "";
String strToSave = "";
foreach (SectionPair sectionPair in keyPairs.Keys) {
if (!sections.Contains(sectionPair.Section))
sections.Add(sectionPair.Section);
}
foreach (String section in sections) {
strToSave += ("[" + section + "]\r\n");
foreach (SectionPair sectionPair in keyPairs.Keys) {
if (sectionPair.Section == section) {
tmpValue = (String)keyPairs[sectionPair];
if (tmpValue != null)
tmpValue = "=" + tmpValue;
strToSave += (sectionPair.Key + tmpValue + "\r\n");
}
}
strToSave += "\r\n";
}
try {
TextWriter tw = new StreamWriter(newFilePath);
tw.Write(strToSave);
tw.Close();
} catch (Exception ex) {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 将设置保存回ini文件。
/// </summary>
public void SaveSettings() {
SaveSettings(iniFilePath);
}
}
}

View File

@@ -0,0 +1,43 @@
namespace AudioWallpaper.Entity {
[Serializable]
public class ConfigurationObject {
private GeneralConfigurationObjects? generalConfigurationObjects;
private VideoWallpaperConfigObject? videoWallpaperConfigObject;
public bool DeviceStateChange = false;
public bool SignRenderingStatus = false;
public bool RenderingStatus = true;
public GeneralConfigurationObjects GeneralConfigurationObjects {
get {
if (generalConfigurationObjects != null) {
return generalConfigurationObjects;
}
return new GeneralConfigurationObjects();
}
set {
if (value != null) {
generalConfigurationObjects = value;
} else {
generalConfigurationObjects = new GeneralConfigurationObjects();
}
}
}
public VideoWallpaperConfigObject VideoWallpaperConfigObject {
get {
if (videoWallpaperConfigObject != null) {
return videoWallpaperConfigObject;
}
return new VideoWallpaperConfigObject();
}
set {
if (value != null) {
videoWallpaperConfigObject = value;
} else {
videoWallpaperConfigObject = new VideoWallpaperConfigObject();
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
namespace AudioWallpaper.Entity {
public class CurrencyConfigObject {
public bool AutoStopWallpaper = true;
private String ConfigName = "CurrencyConfig";
public bool SaveConfig(String configFilePath) {
try {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
configurationTools.AddSetting(ConfigName, "AutoStopWallpaper", AutoStopWallpaper.ToString());
configurationTools.SaveSettings();
return true;
} catch (Exception) {
return false;
}
}
public CurrencyConfigObject LoadConfig(string configFilePath) {
try {
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
AutoStopWallpaper = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "AutoStopWallpaper"));
return this;
} catch (Exception) {
return this;
}
}
}
}

View File

@@ -0,0 +1,227 @@
namespace AudioWallpaper.Entity {
[Serializable]
public class GeneralConfigurationObjects {
/// <summary>
/// 律动默认激进倍率
/// </summary>
public float DefaultRadical = 2f;
/// <summary>
/// 默认频谱偏移量
/// </summary>
public float DefaultOffset = 0.4f;
/// <summary>
/// 默认傅里叶变化量
/// </summary>
public int DefaultFourierVariation = 512;
/// <summary>
/// 窗体函数
/// </summary>
public string ApplyWindowFunc = "BARTLETT";
/// <summary>
/// 默认颜色
/// </summary>
public Color DefaultColor = Color.Blue;
/// <summary>
/// 默认停止颜色
/// </summary>
public Color DefaultStopColor = Color.Red;
/// <summary>
/// 是否使用系统默认颜色
/// </summary>
public bool UseDefaultColorOrNOt = true;
/// <summary>
/// 默认颜色数量
/// </summary>
public int NumberOfColors = 256;
/// <summary>
/// 是否单色显示
/// </summary>
public bool MonochromeOrNot = false;
/// <summary>
/// 默认背景颜色
/// </summary>
public Color BackgroundColor = Color.Black;
/// <summary>
/// 是否使用背景图
/// </summary>
public bool BackImgOrNot = false;
/// <summary>
/// 背景图片地址
/// </summary>
public string? BackgroundImagePath = null;
/// <summary>
/// 是否画出波浪线
/// </summary>
public bool WavyLine = true;
/// <summary>
/// 是否画出边框
/// </summary>
public bool Frame = true;
/// <summary>
/// 是否画出中间圆形
/// </summary>
public bool Rotundity = true;
/// <summary>
/// 是否平滑过渡中间圆形边条
/// </summary>
public bool SmoothRotundity = true;
/// <summary>
/// 中间圆形边条间距
/// </summary>
public uint RotunditySpacing = 3;
/// <summary>
/// 是否画出底边条形
/// </summary>
public bool Stripe = true;
/// <summary>
/// 是否平滑过渡底边条形
/// </summary>
public bool SmoothStripe = true;
/// <summary>
/// 底边条形间距
/// </summary>
public uint StripeSpacing = 3;
/// <summary>
/// 显示器设备名
/// </summary>
public string SettingForScreenName = "";
/// <summary>
/// 当前显示器是否显示壁纸
/// </summary>
public bool IsShow = true;
/// <summary>
/// 是否使用统一配置
/// </summary>
public bool IsUsingUnifiedConfiguration = false;
/// <summary>
/// 当有其它程序全屏时是否停止壁纸
/// </summary>
public bool AutoStopWallPaper = false;
/// <summary>
/// 配置名
/// </summary>
public string DefaultConfiguration = "DefaultConfiguration";
public bool SaveConfig(string configFilePath) {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
string ConfigName = SettingForScreenName + "_" + DefaultConfiguration;
#region
//默认律动激进倍率
configurationTools.AddSetting(ConfigName, "DefaultRadical", DefaultRadical.ToString());
//默认频谱偏移量
configurationTools.AddSetting(ConfigName, "DefaultOffset", DefaultOffset.ToString());
//默认傅里叶变化量
configurationTools.AddSetting(ConfigName, "DefaultFourierVariation", DefaultFourierVariation.ToString());
//窗体函数
configurationTools.AddSetting(ConfigName, "ApplyWindowFunc", ApplyWindowFunc);
//默认开始颜色
configurationTools.AddSetting(ConfigName, "DefaultColor", ColorTranslator.ToHtml(DefaultColor));
//默认停止颜色
configurationTools.AddSetting(ConfigName, "DefaultStopColor", ColorTranslator.ToHtml(DefaultStopColor));
//是否使用默认颜色
configurationTools.AddSetting(ConfigName, "UseDefaultColorOrNOt", UseDefaultColorOrNOt.ToString());
//颜色数量
configurationTools.AddSetting(ConfigName, "NumberOfColors", NumberOfColors.ToString());
//是否单色显示
configurationTools.AddSetting(ConfigName, "MonochromeOrNot", MonochromeOrNot.ToString());
//默认背景颜色
configurationTools.AddSetting(ConfigName, "BackgroundColor", ColorTranslator.ToHtml(BackgroundColor));
//是否使用背景图
configurationTools.AddSetting(ConfigName, "BackImgOrNot", BackImgOrNot.ToString());
//背景图地址
configurationTools.AddSetting(ConfigName, "BackgroundImagePath", BackgroundImagePath);
//是否画出波浪线
configurationTools.AddSetting(ConfigName, "WavyLine", WavyLine.ToString());
//是否画出边框
configurationTools.AddSetting(ConfigName, "Frame", Frame.ToString());
//是否画出中间圆形
configurationTools.AddSetting(ConfigName, "Rotundity", Rotundity.ToString());
//是否平滑过渡中间圆形
configurationTools.AddSetting(ConfigName, "SmoothRotundity", SmoothRotundity.ToString());
//中间圆形条边距
configurationTools.AddSetting(ConfigName, "RotunditySpacing", RotunditySpacing.ToString());
//是否画出底边条形
configurationTools.AddSetting(ConfigName, "Stripe", Stripe.ToString());
//是否平滑过渡底边条形
configurationTools.AddSetting(ConfigName, "SmoothStripe", SmoothStripe.ToString());
//底边条形间距
configurationTools.AddSetting(ConfigName, "StripeSpacing", StripeSpacing.ToString());
//当前显示器名
configurationTools.AddSetting(ConfigName, "SettingForScreenName", SettingForScreenName);
//是否启用
configurationTools.AddSetting(ConfigName, "IsShow", IsShow.ToString());
//是否使用统一配置
configurationTools.AddSetting(ConfigName, "IsUsingUnifiedConfiguration", IsUsingUnifiedConfiguration.ToString());
//当有其它程序全屏时是否停止壁纸
configurationTools.AddSetting(ConfigName, "AutoStopWallPaper", AutoStopWallPaper.ToString());
#endregion
//保存配置
configurationTools.SaveSettings();
return true;
}
public GeneralConfigurationObjects LoadConfiguration(string configFilePath, string name) {
//创建配置工具对象
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
string ConfigName = name + "_" + DefaultConfiguration;
#region
try {
//默认律动激进倍率
DefaultRadical = float.Parse(configurationTools.GetSetting(ConfigName, "DefaultRadical"));
//默认频谱偏移量
DefaultOffset = float.Parse(configurationTools.GetSetting(ConfigName, "DefaultOffset"));
//默认傅里叶变化量
DefaultFourierVariation = int.Parse(configurationTools.GetSetting(ConfigName, "DefaultFourierVariation"));
//窗体函数
ApplyWindowFunc = configurationTools.GetSetting(ConfigName, "ApplyWindowFunc");
//默认颜色
DefaultColor = ColorTranslator.FromHtml(configurationTools.GetSetting(ConfigName, "DefaultColor"));
//默认停止颜色
DefaultStopColor = ColorTranslator.FromHtml(configurationTools.GetSetting(ConfigName, "DefaultStopColor"));
//是否使用默认颜色
UseDefaultColorOrNOt = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "UseDefaultColorOrNOt"));
//颜色数量
NumberOfColors = int.Parse(configurationTools.GetSetting(ConfigName, "NumberOfColors"));
//是否单色显示
MonochromeOrNot = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "MonochromeOrNot"));
//默认背景颜色
BackgroundColor = ColorTranslator.FromHtml(configurationTools.GetSetting(ConfigName, "BackgroundColor"));
//是否使用背景图
BackImgOrNot = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "BackImgOrNot"));
//背景图地址
BackgroundImagePath = configurationTools.GetSetting(ConfigName, "BackgroundImagePath");
//是否画出波浪线
WavyLine = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "WavyLine"));
//是否画出边框
Frame = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "Frame"));
//是否画出中间圆形
Rotundity = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "Rotundity"));
//是否平滑过渡中间圆形边条
SmoothRotundity = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "SmoothRotundity"));
//中间圆形边条间距
RotunditySpacing = uint.Parse(configurationTools.GetSetting(ConfigName,"RotunditySpacing"));
//是否画出底边条形
Stripe = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "Stripe"));
//是否平滑过渡底边条形
SmoothStripe = Convert.ToBoolean(configurationTools.GetSetting(ConfigName,"SmoothStripe"));
//底边条形间距
StripeSpacing = uint.Parse(configurationTools.GetSetting(ConfigName, "StripeSpacing"));
//显示器名
SettingForScreenName = configurationTools.GetSetting(ConfigName, "SettingForScreenName");
//是否显示
IsShow = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "IsShow"));
//是否使用统一配置
IsUsingUnifiedConfiguration = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "IsUsingUnifiedConfiguration"));
//当有其它程序全屏时是否停止壁纸
AutoStopWallPaper = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "AutoStopWallPaper"));
#endregion
} catch (Exception) {
return this;
}
return this;
}
}
}

View File

@@ -0,0 +1,78 @@
namespace AudioWallpaper.Entity {
[Serializable]
public class VideoWallpaperConfigObject {
/// <summary>
/// 视频资源播放地址
/// </summary>
public string? Url = null;
/// <summary>
/// 视频播放音量
/// </summary>
public int Volume = 100;
/// <summary>
/// 视频播放速度
/// </summary>
public int Rate = 10;
/// <summary>
/// 是否显示第三方壁纸
/// </summary>
public bool IsShow = false;
/// <summary>
/// 当有其它程序全屏时是否停止壁纸
/// </summary>
public bool AutoStopWallPaper = false;
/// <summary>
/// 多显示器配置保存
/// </summary>
public string SettingForScreenName = "";
/// <summary>
/// 该配置名
/// </summary>
public string SettingName = "VideoWallpaperConfig";
public void SaveConfig(string configFilePath) {
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
string ConfigName = SettingForScreenName + "_" + SettingName;
//视频播放地址
configurationTools.AddSetting(ConfigName, "VideoUrl", Url);
//视频播放音量
configurationTools.AddSetting(ConfigName, "VideoVolume", Volume.ToString());
//视频播放速度
configurationTools.AddSetting(ConfigName, "VideoRate", Rate.ToString());
//是否显示第三方壁纸
configurationTools.AddSetting(ConfigName, "IsShow", IsShow.ToString());
//当有其它程序全屏时是否停止壁纸
configurationTools.AddSetting(ConfigName, "AutoStopWallPaper", AutoStopWallPaper.ToString());
configurationTools.SaveSettings();
}
public VideoWallpaperConfigObject LoadConfig(string configFilePath, string name) {
ConfigurationTools configurationTools = new ConfigurationTools(configFilePath);
string ConfigName = name + "_" + SettingName;
try {
//视频播放地址
Url = configurationTools.GetSetting(ConfigName, "VideoUrl");
//视频播放音量
Volume = int.Parse(configurationTools.GetSetting(ConfigName, "VideoVolume"));
//视频播放速度
Rate = int.Parse(configurationTools.GetSetting(ConfigName, "VideoRate"));
//是否显示第三方壁纸
IsShow = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "IsShow"));
//当有其它程序全屏时是否停止壁纸
AutoStopWallPaper = Convert.ToBoolean(configurationTools.GetSetting(ConfigName, "AutoStopWallPaper"));
return this;
} catch (Exception) {
return this;
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,255 @@
using AudioWallpaper.Entity;
using Microsoft.Win32;
using NAudio.Wave;
using System.Diagnostics;
using System.IO.Pipes;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text.RegularExpressions;
namespace AudioWallpaper {
public class FormManager {
public GetScreenInfo getScreenInfo = new GetScreenInfo();
public Dictionary<string, MainWindow> mainWindowForms = new();
public Dictionary<string, VideoWallpaperWindow> videoWallpaperForms = new();
//public int ScreenCount = 0;
public Screen[] OldScreens;
public static int restart = 1;
public static bool isCreateWindow = false;
NamedPipeServerStream WallpaperReloadConfigPipe = new NamedPipeServerStream("WallpaperReloadConfigPipe", PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
public FormManager() {
//Console.WriteLine("窗体管理器被加载");
SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
isCreateWindow = true;
LoadWindowSet();
LoadNamePipes();
//Console.WriteLine($"线程ID{Thread.CurrentThread.ManagedThreadId}");
}
public void LoadNamePipes() {
BinaryFormatter formatter = new BinaryFormatter();
WallpaperReloadConfigPipe.WaitForConnectionAsync().ContinueWith(s => {
new Task(() => {
while (true) {
byte[] bytes = new byte[2048];
int bytesRead = WallpaperReloadConfigPipe.Read(bytes, 0, bytes.Length);
using (MemoryStream memoryStream = new MemoryStream()) {
memoryStream.Write(bytes, 0, bytesRead);
memoryStream.Position = 0;
ConfigurationObject configurationObject = (ConfigurationObject)formatter.Deserialize(memoryStream);
if (configurationObject != null) {
SetFrom_ReloadConfig(configurationObject);
}
}
}
}).Start();
});
}
private void SetFrom_ReloadConfig(ConfigurationObject configurationObject) {
if (configurationObject.DeviceStateChange) {
foreach (var item in mainWindowForms) {
item.Value.capture.StopRecording();
item.Value.capture.DataAvailable += null;
item.Value.capture.Dispose();
item.Value.capture = new WasapiLoopbackCapture();
item.Value.capture.WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8192, 1);
item.Value.capture.DataAvailable += item.Value.Capture_DataAvailable;
item.Value.capture.StartRecording();
}
return;
}
GeneralConfigurationObjects generalConfigurationObjects = configurationObject.GeneralConfigurationObjects;
MainWindowReLoadConfig(generalConfigurationObjects);
VideoWallpaperConfigObject videoWallpaperConfigObject = configurationObject.VideoWallpaperConfigObject;
VideoWindowReLoadConfig(videoWallpaperConfigObject);
WinStatusChangeEvent(SetFrom.FullScreenWindowCount <= 0);
}
private void WinStatusChangeEvent(bool status) {
//循环所有窗体
foreach (var item in mainWindowForms) {
item.Value.ChangeStatus(status);
}
foreach (var item in videoWallpaperForms) {
item.Value.ChangeVideoPlayerStatus(status);
}
}
private void MainWindowReLoadConfig(GeneralConfigurationObjects generalConfigurationObjects) {
String wsn = generalConfigurationObjects.SettingForScreenName;
//获取对应的form
MainWindow? w = mainWindowForms.GetValueOrDefault(wsn);
if (w == null && generalConfigurationObjects.IsShow) {
//return;
Process.GetCurrentProcess()?.Kill();
return;
}
if (w == null) {
return;
}
if (!generalConfigurationObjects.IsShow) {
w.Invoke(() => {
w.DisposeAppBarManager();
w.Dispose();
w.Close();
mainWindowForms.Remove(wsn);
});
return;
}
//使用统一配置
if (generalConfigurationObjects.IsUsingUnifiedConfiguration) {
foreach (var item in mainWindowForms) {
item.Value.generalConfigurationObjects.IsUsingUnifiedConfiguration = true;
item.Value.ReShow(generalConfigurationObjects);
}
return;
}
w.ReShow(generalConfigurationObjects);
}
private void VideoWindowReLoadConfig(VideoWallpaperConfigObject videoWallpaperConfigObject) {
String vsn = videoWallpaperConfigObject.SettingForScreenName;
VideoWallpaperWindow? v = videoWallpaperForms.GetValueOrDefault(vsn);
if (v == null && videoWallpaperConfigObject.IsShow) {
Process.GetCurrentProcess()?.Kill();
return;
}
if (v == null) {
return;
}
if (!videoWallpaperConfigObject.IsShow) {
v.Invoke(() => {
v.DisposeAppBarManager();
v.VideoDispose();
v.Dispose();
v.Close();
videoWallpaperForms.Remove(vsn);
});
return;
}
v.ReShow(videoWallpaperConfigObject);
}
public void LoadWindowSet() {
//加载窗体设置
//Console.WriteLine("窗体管理器正在初始化");
ReCreateWindow();
}
private void SystemEvents_DisplaySettingsChanged(object? sender, EventArgs e) {
if (isCreateWindow) {
isCreateWindow = false;
//Console.WriteLine("????");
return;
}
SystemEvents.DisplaySettingsChanging -= SystemEvents_DisplaySettingsChanged;
Process.GetCurrentProcess()?.Kill();
}
private bool IsDisplayChange() {
Screen[] screens = getScreenInfo.GetAllScreen();
if (screens.Length != OldScreens.Length) {
return true;
}
for (int i = 0; i < screens.Length; i++) {
for (int j = 0; j < OldScreens.Length; j++) {
if (screens[i].DeviceName.Equals(OldScreens[j].DeviceName)) {
//这是同一个显示器
if (screens[i].Bounds != OldScreens[j].Bounds) {
return true;
}
if (screens[i].WorkingArea != OldScreens[j].WorkingArea) {
return true;
}
}
}
}
return false;
}
public void CreateWindow() {
//获取显示器数量决定是否继续创建窗体
Screen[] screens = getScreenInfo.GetAllScreen();
OldScreens = screens;
for (int i = 0; i < screens.Length; i++) {
Screen screen = screens[i];
GeneralConfigurationObjects configurationObject = new GeneralConfigurationObjects().LoadConfiguration(SetFrom.ConfigFilePath, screen.DeviceName);
if (configurationObject.IsShow) {
MainWindow mainWindow = new MainWindow(configurationObject);
mainWindow.FullScreenDetectedEvent += WinStatusChangeEvent;
mainWindowForms.Add(screen.DeviceName, mainWindow);
mainWindow.Show();
continue;
}
VideoWallpaperConfigObject videoWallpaperConfigObject = new VideoWallpaperConfigObject().LoadConfig(SetFrom.ConfigFilePath, screen.DeviceName);
if (videoWallpaperConfigObject.IsShow) {
//Console.WriteLine("视频窗体被创建");
VideoWallpaperWindow videoWallpaperWindow = new VideoWallpaperWindow(videoWallpaperConfigObject);
videoWallpaperWindow.FullScreenDetectedEvent += WinStatusChangeEvent;
videoWallpaperForms.Add(screen.DeviceName, videoWallpaperWindow);
videoWallpaperWindow.Show();
}
}
}
public void CorrectFormSizeAndPosition() {
foreach (var item in mainWindowForms) {
String key = item.Key;
Point point = new Point(0, 0);
Screen? screen = getScreenInfo.GetScreenForName(key);
if (screen != null) {
Size size = getScreenInfo.GetScreenScale(screen);
point = getScreenInfo.GetOffsetCorrection(screen);
//Console.WriteLine($"窗体{item.Key}该显示的位置{point}");
//Console.WriteLine($"窗体{item.Key}的大小{size}");
//Console.WriteLine($"窗体{item.Key}的实际位置和大小{item.Value.Location}");
item.Value.ReShow(point.X, point.Y, size.Width, size.Height);
}
}
foreach (var item in videoWallpaperForms) {
String key = item.Key;
Point point = new Point(0, 0);
Screen? screen = getScreenInfo.GetScreenForName(key);
if (screen != null) {
Size size = getScreenInfo.GetScreenScale(screen);
point = getScreenInfo.GetOffsetCorrection(screen);
//Console.WriteLine($"窗体{item.Key}该显示的位置{point}");
//Console.WriteLine($"窗体{item.Key}的大小{size}");
//Console.WriteLine($"窗体{item.Key}的实际位置和大小{item.Value.Location}");
item.Value.ReShow(point.X, point.Y, size.Width, size.Height);
}
}
}
public void ReCreateWindow() {
//关闭所有窗体
foreach (var item in mainWindowForms) {
item.Value.Invoke(() => {
item.Value.DisposeAppBarManager();
item.Value.Dispose();
item.Value.Close();
});
}
foreach (var item in videoWallpaperForms) {
item.Value.Invoke(() => {
item.Value.DisposeAppBarManager();
item.Value.VideoDispose();
item.Value.Dispose();
item.Value.Close();
});
}
mainWindowForms.Clear();
videoWallpaperForms.Clear();
//加载窗体
CreateWindow();
CorrectFormSizeAndPosition();
}
}
}

View File

@@ -0,0 +1,121 @@
using System.Runtime.InteropServices;
namespace AudioWallpaper {
public class GetScreenInfo {
public GetScreenInfo() {
}
public string GetScreenName(Control obj) {
string name = null;
if (obj != null) {
name = Screen.FromControl(obj).DeviceName;
}
return name;
}
public Screen GetScreen(Control obj) {
Screen screen = null;
if (obj != null) {
screen = Screen.FromControl(obj);
}
return screen;
}
public Screen? GetScreenForName(String name) {
foreach (Screen s in GetAllScreen()) {
if (s.DeviceName.Equals(name)) {
return s;
}
}
return null;
}
public int GetScreenCount() {
return Screen.AllScreens.Count();
}
public Screen[] GetAllScreen() {
return Screen.AllScreens;
}
/// <summary>
/// 获取显示器XY值基于窗体显示的修正值
/// </summary>
/// <param name="screen">显示器</param>
/// <returns>修正后窗体显示基准点</returns>
public Point GetOffsetCorrection(Screen screen) {
//返回的基准点
Point point = new Point();
//所有显示器对象
Screen[] screens = GetAllScreen();
//主显示器
Screen MainScreen = Screen.PrimaryScreen;
int offsetX = 0;
int offsetY = 0;
//位于主显示器左边最远的显示器距离
int minX = 0;
int minY = 0;
foreach (Screen sc in screens) {
if (sc.Bounds.Location.X < minX) {
minX = sc.Bounds.Location.X;
}
if (sc.Bounds.Location.Y < 0) {
minY = sc.Bounds.Location.Y;
}
}
//计算传入的显示器距离主显示器位置
if (screen.Bounds.Location.X < 0) {
//该显示器在主显示器的左边
offsetX = Math.Abs(screen.Bounds.Location.X);
point.X = Math.Abs(minX) - offsetX;
}
if (screen.Bounds.Location.Y < 0) {
//该显示器在主显示器的上边
offsetY = Math.Abs(screen.Bounds.Location.Y);
point.Y = Math.Abs(minY) - offsetY;
}
if (screen.Bounds.Location.X >= 0) {
//在主显示器的右边或者,它就是主显示器
//偏移主显示器缩放带来的误差
point.X = Math.Abs(minX) + screen.Bounds.Location.X;
}
if (screen.Bounds.Location.Y >= 0) {
//在主显示器的下边
point.Y = Math.Abs(minY) + screen.Bounds.Location.Y;
}
//Console.WriteLine($"屏幕的位置{screen.Bounds.Location}");
//Console.WriteLine($"Abs miX {Math.Abs(minX)}");
//Console.WriteLine($"offsetx {offsetX}");
//Console.WriteLine($"新算法结果:{point}");
return point;
}
[DllImport("user32.dll")]
private static extern uint GetDpiForWindow([In] IntPtr hmonitor);
#region Win32 API
[DllImport("gdi32.dll", EntryPoint = "GetDeviceCaps")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
[DllImport("gdi32.dll", EntryPoint = "CreateDC")]
static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData);
[DllImport("user32.dll", EntryPoint = "ReleaseDC")]
static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
#endregion
public Size GetScreenScale(Screen screen) {
IntPtr hdc = CreateDC(screen.DeviceName, null, null, IntPtr.Zero);
float yPixel = GetDeviceCaps(hdc, 117);
float xPixel = GetDeviceCaps(hdc, 118);
ReleaseDC(IntPtr.Zero, hdc);
return new Size((int)xPixel, (int)yPixel);
}
}
}

94
AudioVisualizer/MainWindow.Designer.cs generated Normal file
View File

@@ -0,0 +1,94 @@
using System.Net.NetworkInformation;
namespace AudioWallpaper {
partial class MainWindow {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
components = new System.ComponentModel.Container();
drawingPanel = new Panel();
dataTimer = new System.Windows.Forms.Timer(components);
drawingTimer = new System.Windows.Forms.Timer(components);
SuspendLayout();
//
// drawingPanel
//
drawingPanel.AutoSize = true;
drawingPanel.Dock = DockStyle.Fill;
drawingPanel.Location = new Point(0, 0);
drawingPanel.Margin = new Padding(2);
drawingPanel.Name = "drawingPanel";
drawingPanel.Size = new Size(560, 306);
drawingPanel.TabIndex = 0;
//
// dataTimer
//
dataTimer.Interval = 30;
dataTimer.Tick += DataTimer_Tick;
//
// drawingTimer
//
drawingTimer.Interval = 30;
drawingTimer.Tick += DrawingTimer_Tick;
//
// MainWindow
//
AutoScaleMode = AutoScaleMode.None;
BackColor = SystemColors.ActiveCaptionText;
ClientSize = new Size(560, 306);
Controls.Add(drawingPanel);
FormBorderStyle = FormBorderStyle.None;
Margin = new Padding(2);
MaximizeBox = false;
Name = "MainWindow";
StartPosition = FormStartPosition.Manual;
Text = "Music Visualizer";
FormClosed += MainWindow_FormClosed;
Load += MainWindow_Load;
ResumeLayout(false);
PerformLayout();
}
#endregion
#region
/// <summary>
/// 自定义图标大小初始化方法
/// </summary>
/// <param name="toolStripItem">需要设置的菜单项元素</param>
/// <param name="image">图片</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
private void SetToolStripMenuItemImage(ToolStripItem toolStripItem, Image image, int width, int height) {
//取消菜单项自动大小
toolStripItem.AutoSize = false;
//取消菜单项缩放
toolStripItem.ImageScaling = ToolStripItemImageScaling.None;
//设置菜单项图标大小
toolStripItem.Image = new Bitmap(image, new Size(width, height));
}
#endregion
private System.Windows.Forms.Timer dataTimer;
private Panel drawingPanel;
private System.Windows.Forms.Timer drawingTimer;
}
}

View File

@@ -0,0 +1,195 @@
using System.Net.NetworkInformation;
<<<<<<< HEAD
namespace AudioWallpaper {
=======
namespace AudioVisualizer {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
partial class MainWindow {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
components = new System.ComponentModel.Container();
<<<<<<< HEAD
drawingPanel = new Panel();
dataTimer = new System.Windows.Forms.Timer(components);
drawingTimer = new System.Windows.Forms.Timer(components);
=======
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow));
drawingPanel = new Panel();
dataTimer = new System.Windows.Forms.Timer(components);
drawingTimer = new System.Windows.Forms.Timer(components);
contextMenuStripSystemTray = new ContextMenuStrip(components);
SettingSToolStripMenuItem = new ToolStripMenuItem();
ReStartAPPRToolStripMenuItem = new ToolStripMenuItem();
ExitWallpaperToolStripMenuItem = new ToolStripMenuItem();
AboutUsToolStripMenuItem = new ToolStripMenuItem();
notifyIconSystemTray = new NotifyIcon(components);
contextMenuStripSystemTray.SuspendLayout();
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
SuspendLayout();
//
// drawingPanel
//
<<<<<<< HEAD
drawingPanel.AutoSize = true;
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
drawingPanel.Dock = DockStyle.Fill;
drawingPanel.Location = new Point(0, 0);
drawingPanel.Margin = new Padding(2);
drawingPanel.Name = "drawingPanel";
drawingPanel.Size = new Size(560, 306);
drawingPanel.TabIndex = 0;
<<<<<<< HEAD
=======
drawingPanel.MouseDoubleClick += DrawingPanel_MouseDoubleClick;
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
//
// dataTimer
//
dataTimer.Interval = 30;
dataTimer.Tick += DataTimer_Tick;
//
// drawingTimer
//
drawingTimer.Interval = 30;
drawingTimer.Tick += DrawingTimer_Tick;
//
<<<<<<< HEAD
// MainWindow
//
AutoScaleMode = AutoScaleMode.None;
=======
// contextMenuStripSystemTray
//
contextMenuStripSystemTray.ImageScalingSize = new Size(36, 36);
contextMenuStripSystemTray.Items.AddRange(new ToolStripItem[] { SettingSToolStripMenuItem, ReStartAPPRToolStripMenuItem, ExitWallpaperToolStripMenuItem, AboutUsToolStripMenuItem });
contextMenuStripSystemTray.Name = "contextMenuStripSystemTray";
contextMenuStripSystemTray.Size = new Size(201, 194);
//
// SettingSToolStripMenuItem
//
//Image largeIcon = global::AudioVisualizer.Properties.Resources.setting;
//SettingSToolStripMenuItem.ImageScaling = ToolStripItemImageScaling.None;
//SettingSToolStripMenuItem.Image = new Bitmap(largeIcon, new Size(16, 16));
//SettingSToolStripMenuItem.AutoSize = false;
SettingSToolStripMenuItem.Name = "SettingSToolStripMenuItem";
SetToolStripMenuItemImage(SettingSToolStripMenuItem,global::AudioVisualizer.Properties.Resources.setting,16,16);
SettingSToolStripMenuItem.Size = new Size(200, 22);
SettingSToolStripMenuItem.Text = "设置&(S)";
SettingSToolStripMenuItem.Click += SettingSToolStripMenuItem_Click;
//
// ReStartAPPRToolStripMenuItem
//
ReStartAPPRToolStripMenuItem.Name = "ReStartAPPRToolStripMenuItem";
SetToolStripMenuItemImage(ReStartAPPRToolStripMenuItem, global::AudioVisualizer.Properties.Resources.reboot, 16, 16);
ReStartAPPRToolStripMenuItem.Size = new Size(200, 22);
ReStartAPPRToolStripMenuItem.Text = "重启APP&(R)";
ReStartAPPRToolStripMenuItem.Click += ReStartAPPRToolStripMenuItem_Click;
//
// ExitWallpaperToolStripMenuItem
//
ExitWallpaperToolStripMenuItem.Name = "ExitWallpaperToolStripMenuItem";
SetToolStripMenuItemImage(ExitWallpaperToolStripMenuItem, global::AudioVisualizer.Properties.Resources.exit, 16, 16);
ExitWallpaperToolStripMenuItem.Size = new Size(200, 22);
ExitWallpaperToolStripMenuItem.Text = "退出壁纸&(E)";
ExitWallpaperToolStripMenuItem.Click += ExitWallpaperToolStripMenuItem_Click;
//
// AboutUsToolStripMenuItem
//
AboutUsToolStripMenuItem.Name = "AboutUsToolStripMenuItem";
SetToolStripMenuItemImage(AboutUsToolStripMenuItem, global::AudioVisualizer.Properties.Resources.VersionInformation, 16, 16);
AboutUsToolStripMenuItem.Size = new Size(200, 22);
AboutUsToolStripMenuItem.Text = "关于我们&(A)";
AboutUsToolStripMenuItem.Click += AboutUsToolStripMenuItem_Click;
//
// notifyIconSystemTray
//
notifyIconSystemTray.ContextMenuStrip = contextMenuStripSystemTray;
notifyIconSystemTray.Icon = (Icon)resources.GetObject("notifyIconSystemTray.Icon");
notifyIconSystemTray.Text = "律动壁纸";
notifyIconSystemTray.Visible = true;
//
// MainWindow
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
BackColor = SystemColors.ActiveCaptionText;
ClientSize = new Size(560, 306);
Controls.Add(drawingPanel);
FormBorderStyle = FormBorderStyle.None;
Margin = new Padding(2);
<<<<<<< HEAD
MaximizeBox = false;
Name = "MainWindow";
StartPosition = FormStartPosition.Manual;
Text = "Music Visualizer";
FormClosed += MainWindow_FormClosed;
Load += MainWindow_Load;
ResumeLayout(false);
PerformLayout();
=======
Name = "MainWindow";
Text = "Music Visualizer";
FormClosed += MainWindow_FormClosed;
Load += MainWindow_Load;
SizeChanged += MainWindow_SizeChanged;
contextMenuStripSystemTray.ResumeLayout(false);
ResumeLayout(false);
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
#endregion
#region
/// <summary>
/// 自定义图标大小初始化方法
/// </summary>
/// <param name="toolStripItem">需要设置的菜单项元素</param>
/// <param name="image">图片</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
private void SetToolStripMenuItemImage(ToolStripItem toolStripItem, Image image, int width, int height) {
//取消菜单项自动大小
toolStripItem.AutoSize = false;
//取消菜单项缩放
toolStripItem.ImageScaling = ToolStripItemImageScaling.None;
//设置菜单项图标大小
toolStripItem.Image = new Bitmap(image, new Size(width, height));
}
#endregion
private System.Windows.Forms.Timer dataTimer;
private Panel drawingPanel;
private System.Windows.Forms.Timer drawingTimer;
<<<<<<< HEAD
=======
private ContextMenuStrip contextMenuStripSystemTray;
private ToolStripMenuItem ExitWallpaperToolStripMenuItem;
private NotifyIcon notifyIconSystemTray;
private ToolStripMenuItem SettingSToolStripMenuItem;
private ToolStripMenuItem ReStartAPPRToolStripMenuItem;
private ToolStripMenuItem AboutUsToolStripMenuItem;
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
}

View File

@@ -0,0 +1,623 @@
using AudioWallpaper.Entity;
using LibAudioVisualizer;
using NAudio.CoreAudioApi;
using NAudio.Wave;
using System.Drawing.Drawing2D;
using System.Numerics;
namespace AudioWallpaper {
public partial class MainWindow : Form {
private IntPtr programIntPtr = IntPtr.Zero;
public WasapiCapture capture; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
public Visualizer visualizer; // <20><><EFBFBD>ӻ<EFBFBD>
double[]? spectrumData; // Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public Color[] allColors; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
public GeneralConfigurationObjects generalConfigurationObjects;
public Bitmap backgroundImage;
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
public int offsetx = 0, offsety = 0;
public int width = 1920;
public int height = 1080;
private AppBarManager appBarManager;
public delegate void FullScreenDetected(bool status);
public event FullScreenDetected FullScreenDetectedEvent;
public MainWindow(GeneralConfigurationObjects configuration) {
appBarManager = new AppBarManager(Handle);
generalConfigurationObjects = configuration;
capture = new WasapiLoopbackCapture(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
visualizer = new Visualizer(generalConfigurationObjects.DefaultFourierVariation); // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>, <20><>ʹ<EFBFBD><CAB9> 256 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ҷ<EFBFBD>
allColors = GetAllHsvColors(generalConfigurationObjects.NumberOfColors); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>еĽ<D0B5><C4BD><EFBFBD><EFBFBD><EFBFBD>ɫ (HSV <20><>ɫ)
capture.WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8192, 2); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ʽ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 32λ<32><CEBB><EFBFBD><EFBFBD>, IeeeFloat <20><><EFBFBD><EFBFBD>, 8192<39><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
capture.DataAvailable += Capture_DataAvailable; // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
InitializeComponent();
Init();
Win32.SetParent(this.Handle, programIntPtr);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B4A5>DisplayChange<67>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ѧ
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
/// </summary>
/// <returns><3E><>ɫ<EFBFBD><C9AB>Ϣ</returns>
public Color[] GetAllHsvColors(int NumberOfColors) {
if (generalConfigurationObjects.MonochromeOrNot) {
return new Color[] { generalConfigurationObjects.DefaultColor };
} else if (generalConfigurationObjects.UseDefaultColorOrNOt) {
return SystemDefaultColors();
} else {
Color[] colors1 = GenerateColorsBetween(generalConfigurationObjects.DefaultColor, generalConfigurationObjects.DefaultStopColor, NumberOfColors / 2);
Color[] colors2 = GenerateColorsBetween(generalConfigurationObjects.DefaultStopColor, generalConfigurationObjects.DefaultColor, NumberOfColors / 2);
Color[] colors = new Color[colors1.Length + colors2.Length];
Array.Copy(colors1, 0, colors, 0, colors1.Length);
Array.Copy(colors2, 0, colors, colors1.Length, colors2.Length);
return colors;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>HSV <20><><EFBFBD><EFBFBD><EFBFBD>еĻ<D0B5><C4BB><EFBFBD><EFBFBD><EFBFBD>ɫ (<28><><EFBFBD>ͶȺ<CDB6><C8BA><EFBFBD><EFBFBD>Ⱦ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ)
/// </summary>
/// <returns><3E><><EFBFBD>е<EFBFBD> HSV <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(<28><> 256 * 6 <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ɫҲ<C9AB><EFBFBD><E1BDA5>)</returns>
public static Color[] SystemDefaultColors() {
Color[] result = new Color[256 * 6];
for (int i = 0; i < 256; i++) {
result[i] = Color.FromArgb(255, i, 0);
}
for (int i = 0; i < 256; i++) {
result[256 + i] = Color.FromArgb(255 - i, 255, 0);
}
for (int i = 0; i < 256; i++) {
result[512 + i] = Color.FromArgb(0, 255, i);
}
for (int i = 0; i < 256; i++) {
result[768 + i] = Color.FromArgb(0, 255 - i, 255);
}
for (int i = 0; i < 256; i++) {
result[1024 + i] = Color.FromArgb(i, 0, 255);
}
for (int i = 0; i < 256; i++) {
result[1280 + i] = Color.FromArgb(255, 0, 255 - i);
}
return result;
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
/// </summary>
/// <param name="color1"><3E><>ʼ<EFBFBD><CABC>ɫ</param>
/// <param name="color2"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ</param>
/// <param name="steps"><3E><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD></param>
/// <returns></returns>
public Color[] GenerateColorsBetween(Color color1, Color color2, int steps) {
Color[] colors = new Color[steps];
for (int i = 0; i < steps; i++) {
double t = (double)i / (steps - 1); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>İٷֱ<D9B7>
int red = (int)(color1.R + t * (color2.R - color1.R));
int green = (int)(color1.G + t * (color2.G - color1.G));
int blue = (int)(color1.B + t * (color2.B - color1.B));
colors[i] = Color.FromArgb(red, green, blue);
}
return colors;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void Capture_DataAvailable(object? sender, WaveInEventArgs e) {
int length = e.BytesRecorded / 4; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20>ֽ<EFBFBD>)
double[] result = new double[length]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < length; i++) {
result[i] = BitConverter.ToSingle(e.Buffer, i * 4)*generalConfigurationObjects.DefaultRadical; // ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//result[i] = db;
}
visualizer.PushSampleData(result); // <20><><EFBFBD>µIJ<C2B5><C4B2><EFBFBD><EFBFBD><EFBFBD><E6B4A2> <20><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD> <20><>
}
double CalculateDB(double sample) {
return 20 * Math.Log10(Math.Abs(sample) + 1e-10); // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>ʵ<EFBFBD><CAB5>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataTimer_Tick(object? sender, EventArgs e) {
double[] newSpectrumData = visualizer.GetSpectrumData(generalConfigurationObjects.ApplyWindowFunc); // <20>ӿ<EFBFBD><D3BF>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>л<EFBFBD>ȡƵ<C8A1><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
newSpectrumData = Visualizer.MakeSmooth(newSpectrumData, 2); // ƽ<><C6BD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (spectrumData == null) // <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><E6B4A2>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>, <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD>ֵ<EFBFBD><D6B5>ȥ
{
spectrumData = newSpectrumData;
return;
}
for (int i = 0; i < newSpectrumData.Length; i++) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD> "<22>м<EFBFBD>ֵ"
{
double oldData = spectrumData[i];
double newData = newSpectrumData[i];
double lerpData = oldData + (newData - oldData) * generalConfigurationObjects.DefaultOffset; // ÿһ<C3BF><D2BB>ִ<EFBFBD><D6B4>, Ƶ<><C6B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ֵ<EFBFBD>ƶ<EFBFBD> 20% (<28><><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>, <20><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>̫С, Ƶ<>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>ӳٵĸо<C4B8>)
spectrumData[i] = lerpData;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"><3E><>ͼĿ<CDBC><C4BF></param>
/// <param name="down"><3E>·<EFBFBD><C2B7><EFBFBD>ɫ</param>
/// <param name="up"><3E>Ϸ<EFBFBD><CFB7><EFBFBD>ɫ</param>
/// <param name="spectrumData">Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="pointCount"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="drawingWidth"><3E><><EFBFBD>˵Ŀ<CBB5><C4BF><EFBFBD></param>
/// <param name="xOffset"><3E><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ʼX<CABC><58><EFBFBD><EFBFBD></param>
/// <param name="yOffset"><3E><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ʵY<CAB5><59><EFBFBD><EFBFBD></param>
/// <param name="scale">Ƶ<>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>(ʹ<>ø<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Է<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>)</param>
private void DrawGradient(Graphics g, Color down, Color up, double[] spectrumData, int pointCount, int drawingWidth, float xOffset, float yOffset, double scale) {
GraphicsPath path = new GraphicsPath();
PointF[] points = new PointF[pointCount + 2];
for (int i = 0; i < pointCount; i++) {
double x = i * drawingWidth / pointCount + xOffset;
double y = spectrumData[i * spectrumData.Length / pointCount] * scale + yOffset;
points[i + 1] = new PointF((float)x, (float)y);
}
points[0] = new PointF(xOffset, yOffset);
points[points.Length - 1] = new PointF(xOffset + drawingWidth, yOffset);
path.AddCurve(points);
float upP = (float)points.Min(v => v.Y);
if (Math.Abs(upP - yOffset) < 1)
return;
using Brush brush = new LinearGradientBrush(new PointF(0, yOffset), new PointF(0, upP), down, up);
g.FillPath(brush, path);
}
/// <summary>
/// <20><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"><3E><>ͼĿ<CDBC><C4BF></param>
/// <param name="down"><3E>·<EFBFBD><C2B7><EFBFBD>ɫ</param>
/// <param name="up"><3E>Ϸ<EFBFBD><CFB7><EFBFBD>ɫ</param>
/// <param name="spectrumData">Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="stripCount"><3E><><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="drawingWidth"><3E><>ͼ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD></param>
/// <param name="xOffset"><3E><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʼ X <20><><EFBFBD><EFBFBD></param>
/// <param name="yOffset"><3E><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʼ Y <20><><EFBFBD><EFBFBD></param>
/// <param name="spacing"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>(<28><><EFBFBD><EFBFBD>)</param>
/// <param name="scale"></param>
private void DrawGradientStrips(Graphics g, Color down, Color up, double[] spectrumData, int stripCount, int drawingWidth, float xOffset, float yOffset, float spacing, double scale) {
float stripWidth = (drawingWidth - spacing * stripCount) / stripCount;
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = stripWidth * i + spacing * i + xOffset;
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
points[i] = new PointF((float)x, (float)y);
}
float upP = (float)points.Min(v => v.Y < 0 ? yOffset + v.Y : yOffset);
float downP = (float)points.Max(v => v.Y < 0 ? yOffset : yOffset + v.Y);
if (downP < yOffset)
downP = yOffset;
if (Math.Abs(upP - downP) < 1)
return;
using Brush brush = new LinearGradientBrush(new PointF(0, downP), new PointF(0, upP), down, up);
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
float y = yOffset;
float height = p.Y;
if (height < 0) {
y += height;
height = -height;
}
g.FillRectangle(brush, new RectangleF(p.X, generalConfigurationObjects.SmoothStripe ? y + stripWidth / 2 : y, stripWidth, height));
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Եƽ<D4B5><C6BD>
if (generalConfigurationObjects.SmoothStripe) {
//<2F><><EFBFBD>ƶ<EFBFBD><C6B6>˵İ<CBB5>Բ<EFBFBD><D4B2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
float radius = stripWidth / 2; // <20><>Բ<EFBFBD>İ뾶
if (height > 0) {
g.FillEllipse(brush, new RectangleF(p.X, y, stripWidth, radius * 2));
} else {
g.FillEllipse(brush, new RectangleF(p.X, y + height, stripWidth, radius * 2));
}
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="pen"></param>
/// <param name="spectrumData"></param>
/// <param name="pointCount"></param>
/// <param name="drawingWidth"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="scale"></param>
private void DrawCurve(Graphics g, Pen pen, double[] spectrumData, int pointCount, int drawingWidth, double xOffset, double yOffset, double scale) {
PointF[] points = new PointF[pointCount];
for (int i = 0; i < pointCount; i++) {
//MessageBox.Show(spectrumData[0].ToString());
if (spectrumData[i] == 0.0) {
continue;
}
double x = i * drawingWidth / pointCount + xOffset;
double y = spectrumData[i * spectrumData.Length / pointCount] * scale + yOffset;
points[i] = new PointF((float)x, (float)y);
}
g.DrawCurve(pen, points);
}
/// <summary>
/// <20><><EFBFBD>򵥵<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="brush"></param>
/// <param name="spectrumData"></param>
/// <param name="stripCount"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="radius"></param>
/// <param name="spacing"></param>
/// <param name="rotation"></param>
/// <param name="scale"></param>
private void DrawCircleStrips(Graphics g, Brush brush, double[] spectrumData, int stripCount, double xOffset, double yOffset, double radius, double spacing, double rotation, double scale) {
double rotationAngle = Math.PI / 180 * rotation;
double blockWidth = MathF.PI * 2 / stripCount; // angle
double stripWidth = blockWidth - MathF.PI / 180 * spacing; // angle
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = blockWidth * i + rotationAngle; // angle
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
points[i] = new PointF((float)x, (float)y);
}
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
double sinStart = Math.Sin(p.X);
double sinEnd = Math.Sin(p.X + stripWidth);
double cosStart = Math.Cos(p.X);
double cosEnd = Math.Cos(p.X + stripWidth);
PointF[] polygon = new PointF[]
{
new PointF((float)(cosStart * radius + xOffset), (float)(sinStart * radius + yOffset)),
new PointF((float)(cosEnd * radius + xOffset), (float)(sinEnd * radius + yOffset)),
new PointF((float)(cosEnd * (radius + p.Y) + xOffset), (float)(sinEnd * (radius + p.Y) + yOffset)),
new PointF((float)(cosStart * (radius + p.Y) + xOffset), (float)(sinStart * (radius + p.Y) + yOffset)),
};
g.FillPolygon(brush, polygon);
}
}
/// <summary>
/// <20><>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="inner"></param>
/// <param name="outer"></param>
/// <param name="spectrumData"></param>
/// <param name="stripCount"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="radius"></param>
/// <param name="spacing"></param>
/// <param name="scale"></param>
private void DrawCircleGradientStrips(Graphics g, Color inner, Color outer, double[] spectrumData, int stripCount, double xOffset, double yOffset, double radius, double spacing, double rotation, double scale) {
double rotationAngle = Math.PI / 180 * rotation;
double blockWidth = Math.PI * 2 / stripCount; // angle
double stripWidth = blockWidth - MathF.PI / 180 * spacing; // angle
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = blockWidth * i + rotationAngle; // angle
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
points[i] = new PointF((float)x, (float)y);
}
double maxHeight = points.Max(v => v.Y);
double outerRadius = radius + maxHeight;
PointF[] polygon = new PointF[4];
GraphicsPath path = new GraphicsPath();
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
double sinStart = Math.Sin(p.X);
double sinEnd = Math.Sin(p.X + stripWidth);
double cosStart = Math.Cos(p.X);
double cosEnd = Math.Cos(p.X + stripWidth);
PointF
p1 = new PointF((float)(cosStart * radius + xOffset), (float)(sinStart * radius + yOffset)),
p2 = new PointF((float)(cosEnd * radius + xOffset), (float)(sinEnd * radius + yOffset)),
p3 = new PointF((float)(cosEnd * (radius + p.Y) + xOffset), (float)(sinEnd * (radius + p.Y) + yOffset)),
p4 = new PointF((float)(cosStart * (radius + p.Y) + xOffset), (float)(sinStart * (radius + p.Y) + yOffset));
polygon[0] = p1;
polygon[1] = p2;
polygon[2] = p3;
polygon[3] = p4;
PointF innerP = new PointF((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
PointF outerP = new PointF((p3.X + p4.X) / 2, (p3.Y + p4.Y) / 2);
Vector2 offset = new Vector2(outerP.X - innerP.X, outerP.Y - innerP.Y);
if (MathF.Sqrt(offset.X * offset.X + offset.Y * offset.Y) < 1) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2BB>̫С
continue;
try {
using LinearGradientBrush brush = new LinearGradientBrush(innerP, outerP, inner, outer); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ bug, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ա<EFBFBD>ˢ<EFBFBD><CBA2> OutMemoryException
g.FillPolygon(brush, polygon); // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ϲ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣...
} catch { }
}
}
/// <summary>
/// <20><><EFBFBD>򵥵<EFBFBD><F2B5A5B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="brush"></param>
/// <param name="spectrumData"></param>
/// <param name="stripCount"></param>
/// <param name="drawingWidth"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="spacing"></param>
/// <param name="scale"></param>
private void DrawStrips(Graphics g, Brush brush, double[] spectrumData, int stripCount, int drawingWidth, float xOffset, float yOffset, float spacing, double scale) {
float stripWidth = (drawingWidth - spacing * stripCount) / stripCount;
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = stripWidth * i + spacing * i + xOffset;
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
points[i] = new PointF((float)x, (float)y);
}
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
float y = yOffset;
float height = p.Y;
if (height < 0) {
y += height;
height = -height;
}
g.FillRectangle(brush, new RectangleF(p.X, y, stripWidth, height));
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı߿<C4B1>
/// </summary>
/// <param name="g"></param>
/// <param name="inner"></param>
/// <param name="outer"></param>
/// <param name="area"></param>
/// <param name="scale"></param>
/// <param name="width"></param>
private void DrawGradientBorder(Graphics g, Color inner, Color outer, Rectangle area, double scale, float width) {
int thickness = (int)(width * scale);
if (thickness < 1)
return;
Rectangle rect = new Rectangle(area.X, area.Y, area.Width, area.Height);
Rectangle up = new Rectangle(rect.Location, new Size(rect.Width, thickness));
Rectangle down = new Rectangle(new Point(rect.X, (int)(rect.X + rect.Height - scale * width)), new Size(rect.Width, thickness));
Rectangle left = new Rectangle(rect.Location, new Size(thickness, rect.Height));
Rectangle right = new Rectangle(new Point((int)(rect.X + rect.Width - scale * width), rect.Y), new Size(thickness, rect.Height));
LinearGradientBrush upB = new LinearGradientBrush(up, outer, inner, LinearGradientMode.Vertical);
LinearGradientBrush downB = new LinearGradientBrush(down, inner, outer, LinearGradientMode.Vertical);
LinearGradientBrush leftB = new LinearGradientBrush(left, outer, inner, LinearGradientMode.Horizontal);
LinearGradientBrush rightB = new LinearGradientBrush(right, inner, outer, LinearGradientMode.Horizontal);
upB.WrapMode = downB.WrapMode = leftB.WrapMode = rightB.WrapMode = WrapMode.TileFlipXY;
g.FillRectangle(upB, up);
g.FillRectangle(downB, down);
g.FillRectangle(leftB, left);
g.FillRectangle(rightB, right);
}
int colorIndex = 0;
double rotation = 0;
BufferedGraphics? oldBuffer;
private void DrawingTimer_Tick(object? sender, EventArgs e) {
if (spectrumData == null)
return;
rotation += .1;
colorIndex++;
Color color1 = allColors[colorIndex % allColors.Length];
Color color2 = allColors[(colorIndex + 200) % allColors.Length];
double[] bassArea = Visualizer.TakeSpectrumOfFrequency(spectrumData, capture.WaveFormat.SampleRate, 250); // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
double bassScale = bassArea.Average() * 100; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
double extraScale = Math.Min(drawingPanel.Width, drawingPanel.Height) / 6; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD>ϴ<EFBFBD><CFB4>ڴ<EFBFBD>С)
Rectangle border = new Rectangle(Point.Empty, drawingPanel.Size);
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(drawingPanel.CreateGraphics(), drawingPanel.ClientRectangle);
Graphics g = buffer.Graphics;
if (oldBuffer != null) {
//oldBuffer.Render(buffer.Graphics); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʵ<D2AA><CAB5> "<22><>Ӱ" Ч<><D0A7>, <20><>ȡ<EFBFBD><C8A1>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>, <20><><EFBFBD>ҽ<EFBFBD> g.Clear <20><>Ϊ g.FillRectange(xxx, <20><>͸<EFBFBD><CDB8><EFBFBD>ĺ<EFBFBD>ɫ)
oldBuffer.Dispose();
}
using Pen pen = new Pen(Color.Pink); // <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õı<C3B5>
g.SmoothingMode = SmoothingMode.HighQuality; // <20><><EFBFBD>˺<EFBFBD>, <20>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
g.Clear(drawingPanel.BackColor);
if (backgroundImage != null && generalConfigurationObjects.BackImgOrNot) {
g.DrawImage(backgroundImage, 0, 0);
}
if (generalConfigurationObjects.Frame) {
DrawGradientBorder(g, Color.FromArgb(0, color1), color2, border, bassScale, drawingPanel.Width / 10);
}
if (generalConfigurationObjects.Stripe) {
DrawGradientStrips(g, color1, color2, spectrumData, spectrumData.Length, drawingPanel.Width, 0, drawingPanel.Height, generalConfigurationObjects.StripeSpacing, -drawingPanel.Height * 10);
}
if (generalConfigurationObjects.Rotundity) {
DrawCircleGradientStrips(g, color1, color2, spectrumData, spectrumData.Length, drawingPanel.Width / 2, drawingPanel.Height / 2, MathF.Min(drawingPanel.Width, drawingPanel.Height) / 4 + extraScale * bassScale, 1, rotation, drawingPanel.Width / 6 * 10);
}
if (generalConfigurationObjects.WavyLine) {
DrawCurve(g, pen, visualizer.SampleData, visualizer.SampleData.Length, drawingPanel.Width, 0, drawingPanel.Height / 2, MathF.Min(drawingPanel.Height / 10, 100));
}
buffer.Render();
oldBuffer = buffer; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> buffer (֮<><D6AE><EFBFBD>Բ<EFBFBD>ȫ<EFBFBD><C8AB>ֻʹ<D6BB><CAB9>һ<EFBFBD><D2BB> Buffer <20><><EFBFBD><EFBFBD>Ϊ,,, <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>С, <20><><EFBFBD><EFBFBD>ÿһ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ)
}
private void MainWindow_Load(object sender, EventArgs e) {
SetBounds(offsetx, offsety, width, height);
capture.StartRecording();
dataTimer.Start();
drawingTimer.Start();
}
private void MainWindow_FormClosed(object sender, FormClosedEventArgs e) {
Environment.Exit(0);
}
protected override void WndProc(ref Message m) {
if (appBarManager != null && m.Msg == appBarManager.uCallbackMessage) {
switch ((int)m.WParam) {
case AppBarManager.ABN_FULLSCREENAPP:
bool isFullScreen = m.LParam != IntPtr.Zero;
if (isFullScreen) {
SetFrom.FullScreenWindowCount++;
} else {
SetFrom.FullScreenWindowCount--;
}
ChangeStatus(SetFrom.FullScreenWindowCount <= 0);
FullScreenDetectedEvent(SetFrom.FullScreenWindowCount <= 0);
break;
}
}
base.WndProc(ref m);
}
public void DisposeAppBarManager() {
appBarManager.Dispose();
}
public void ReShow(int x, int y, int width, int height) {
this.width = width;
this.height = height;
SetBounds(x, y, width, height);
LoadBack();
//Win32.SetParent(this.Handle, IntPtr.Zero);
//Win32.SetParent(this.Handle, programIntPtr);
Refresh();
}
public void ReShow(GeneralConfigurationObjects generalConfigurationObjects) {
this.generalConfigurationObjects = generalConfigurationObjects;
LoadBack();
allColors = GetAllHsvColors(generalConfigurationObjects.NumberOfColors);
}
public void ChangeStatus(bool status) {
if (!status && generalConfigurationObjects.AutoStopWallPaper) {
dataTimer.Stop();
drawingTimer.Stop();
return;
}
Invoke(new Action(() => {
dataTimer.Start();
drawingTimer.Start();
}));
}
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
public void LoadBack() {
if (generalConfigurationObjects.BackImgOrNot && generalConfigurationObjects.BackgroundImagePath != null) {
//BackgroundImage = Image.FromFile(generalConfigurationObjects.BackgroundImagePath);
using (var originalImage = Image.FromFile(generalConfigurationObjects.BackgroundImagePath)) {
double widthScale = (double)width / originalImage.Width;
double heightScale = (double)height / originalImage.Height;
double scale = Math.Min(widthScale, heightScale);
int newWidth = (int)(originalImage.Width * scale);
int newHeight = (int)(originalImage.Height * scale);
int bgioffsetX = (width - newWidth) / 2;
int bgioffsetY = (height - newHeight) / 2;
backgroundImage = new Bitmap(width, height);
using (var graphics = Graphics.FromImage(backgroundImage)) {
graphics.DrawImage(originalImage, bgioffsetX, bgioffsetY, newWidth, newHeight);
}
}
} else {
BackColor = generalConfigurationObjects.BackgroundColor;
}
}
public void Init() {
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ش<EFBFBD><D8B4>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>
programIntPtr = Win32.FindWindow("Progman", null);
// <20><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>Ч
if (programIntPtr != IntPtr.Zero) {
IntPtr result = IntPtr.Zero;
// <20><> Program Manager <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD> 0x52c <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ0x3e8<65><38>1<EFBFBD><EFBFBD><EBA3A9>
Win32.SendMessageTimeout(programIntPtr, 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 0x3e8, result);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Win32.EnumWindows((hwnd, lParam) => {
// <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD> SHELLDLL_DefView <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD> WorkerW
if (Win32.FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero) {
// <20>ҵ<EFBFBD><D2B5><EFBFBD>ǰ WorkerW <20><><EFBFBD>ڵģ<DAB5><C4A3><EFBFBD>һ<EFBFBD><D2BB> WorkerW <20><><EFBFBD>ڡ<EFBFBD>
IntPtr tempHwnd = Win32.FindWindowEx(IntPtr.Zero, hwnd, "WorkerW", null);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Win32.ShowWindow(tempHwnd, 0);
}
return true;
}, IntPtr.Zero);
}
}
}
}

View File

@@ -0,0 +1,823 @@
<<<<<<< HEAD
using AudioWallpaper.Entity;
using LibAudioVisualizer;
using NAudio.CoreAudioApi;
using NAudio.Wave;
using System.Drawing.Drawing2D;
using System.Numerics;
namespace AudioWallpaper {
public partial class MainWindow : Form {
private IntPtr programIntPtr = IntPtr.Zero;
public WasapiCapture capture; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
public Visualizer visualizer; // <20><><EFBFBD>ӻ<EFBFBD>
double[]? spectrumData; // Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public Color[] allColors; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
public GeneralConfigurationObjects generalConfigurationObjects;
public Bitmap backgroundImage;
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
public int offsetx = 0, offsety = 0;
public int width = 1920;
public int height = 1080;
private AppBarManager appBarManager;
public delegate void FullScreenDetected(bool status);
public event FullScreenDetected FullScreenDetectedEvent;
public MainWindow(GeneralConfigurationObjects configuration) {
appBarManager = new AppBarManager(Handle);
generalConfigurationObjects = configuration;
capture = new WasapiLoopbackCapture(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
visualizer = new Visualizer(generalConfigurationObjects.DefaultFourierVariation); // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>, <20><>ʹ<EFBFBD><CAB9> 256 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ҷ<EFBFBD>
allColors = GetAllHsvColors(generalConfigurationObjects.NumberOfColors); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>еĽ<D0B5><C4BD><EFBFBD><EFBFBD><EFBFBD>ɫ (HSV <20><>ɫ)
capture.WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8192, 2); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ʽ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 32λ<32><CEBB><EFBFBD><EFBFBD>, IeeeFloat <20><><EFBFBD><EFBFBD>, 8192<39><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
capture.DataAvailable += Capture_DataAvailable; // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
InitializeComponent();
Init();
Win32.SetParent(this.Handle, programIntPtr);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B4A5>DisplayChange<67>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ѧ
=======
using LibAudioVisualizer;
using NAudio.CoreAudioApi;
using NAudio.Wave;
using System.Configuration;
using System.Diagnostics;
using System.Drawing.Drawing2D;
using System.Numerics;
using System.Runtime.InteropServices;
namespace AudioVisualizer {
public partial class MainWindow : Form {
private IntPtr programIntPtr = IntPtr.Zero;
WasapiCapture capture; // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
public Visualizer visualizer; // <20><><EFBFBD>ӻ<EFBFBD>
double[]? spectrumData; // Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public static Color[] allColors; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
public static ConfigurationObject configurationObject = new ConfigurationObject();
public Bitmap backgroundImage;
public MainWindow() {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
configurationObject.LoadConfiguration("./config.ini");
capture = new WasapiLoopbackCapture(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
visualizer = new Visualizer(configurationObject.DefaultFourierVariation); // <20>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>, <20><>ʹ<EFBFBD><CAB9> 256 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>Ҷ<EFBFBD>
allColors = GetAllHsvColors(configurationObject.NumberOfColors); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>еĽ<D0B5><C4BD><EFBFBD><EFBFBD><EFBFBD>ɫ (HSV <20><>ɫ)
capture.WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8192, 2); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ʽ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 32λ<32><CEBB><EFBFBD><EFBFBD>, IeeeFloat <20><><EFBFBD><EFBFBD>, 8192<39><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
capture.DataAvailable += Capture_DataAvailable; // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
InitializeComponent();
Init();
Win32.SetParent(this.Handle, programIntPtr);
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
/// </summary>
/// <returns><3E><>ɫ<EFBFBD><C9AB>Ϣ</returns>
<<<<<<< HEAD
public Color[] GetAllHsvColors(int NumberOfColors) {
if (generalConfigurationObjects.MonochromeOrNot) {
return new Color[] { generalConfigurationObjects.DefaultColor };
} else if (generalConfigurationObjects.UseDefaultColorOrNOt) {
return SystemDefaultColors();
} else {
Color[] colors1 = GenerateColorsBetween(generalConfigurationObjects.DefaultColor, generalConfigurationObjects.DefaultStopColor, NumberOfColors / 2);
Color[] colors2 = GenerateColorsBetween(generalConfigurationObjects.DefaultStopColor, generalConfigurationObjects.DefaultColor, NumberOfColors / 2);
=======
public static Color[] GetAllHsvColors(int NumberOfColors) {
if (configurationObject.MonochromeOrNot) {
return new Color[] { configurationObject.DefaultColor };
} else if (configurationObject.UseDefaultColorOrNOt) {
return SystemDefaultColors();
} else {
Color[] colors1 = GenerateColorsBetween(configurationObject.DefaultColor, configurationObject.DefaultStopColor, NumberOfColors / 2);
Color[] colors2 = GenerateColorsBetween(configurationObject.DefaultStopColor, configurationObject.DefaultColor, NumberOfColors / 2);
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
Color[] colors = new Color[colors1.Length + colors2.Length];
Array.Copy(colors1, 0, colors, 0, colors1.Length);
Array.Copy(colors2, 0, colors, colors1.Length, colors2.Length);
return colors;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>HSV <20><><EFBFBD><EFBFBD><EFBFBD>еĻ<D0B5><C4BB><EFBFBD><EFBFBD><EFBFBD>ɫ (<28><><EFBFBD>ͶȺ<CDB6><C8BA><EFBFBD><EFBFBD>Ⱦ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ)
/// </summary>
/// <returns><3E><><EFBFBD>е<EFBFBD> HSV <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(<28><> 256 * 6 <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ɫҲ<C9AB><EFBFBD><E1BDA5>)</returns>
public static Color[] SystemDefaultColors() {
Color[] result = new Color[256 * 6];
for (int i = 0; i < 256; i++) {
result[i] = Color.FromArgb(255, i, 0);
}
for (int i = 0; i < 256; i++) {
result[256 + i] = Color.FromArgb(255 - i, 255, 0);
}
for (int i = 0; i < 256; i++) {
result[512 + i] = Color.FromArgb(0, 255, i);
}
for (int i = 0; i < 256; i++) {
result[768 + i] = Color.FromArgb(0, 255 - i, 255);
}
for (int i = 0; i < 256; i++) {
result[1024 + i] = Color.FromArgb(i, 0, 255);
}
for (int i = 0; i < 256; i++) {
result[1280 + i] = Color.FromArgb(255, 0, 255 - i);
}
return result;
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
/// </summary>
/// <param name="color1"><3E><>ʼ<EFBFBD><CABC>ɫ</param>
/// <param name="color2"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ</param>
/// <param name="steps"><3E><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD></param>
/// <returns></returns>
<<<<<<< HEAD
public Color[] GenerateColorsBetween(Color color1, Color color2, int steps) {
=======
public static Color[] GenerateColorsBetween(Color color1, Color color2, int steps) {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
Color[] colors = new Color[steps];
for (int i = 0; i < steps; i++) {
double t = (double)i / (steps - 1); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>İٷֱ<D9B7>
int red = (int)(color1.R + t * (color2.R - color1.R));
int green = (int)(color1.G + t * (color2.G - color1.G));
int blue = (int)(color1.B + t * (color2.B - color1.B));
colors[i] = Color.FromArgb(red, green, blue);
}
return colors;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><CAB1>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
<<<<<<< HEAD
public void Capture_DataAvailable(object? sender, WaveInEventArgs e) {
int length = e.BytesRecorded / 4; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20>ֽ<EFBFBD>)
double[] result = new double[length]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < length; i++) {
result[i] = BitConverter.ToSingle(e.Buffer, i * 4)*generalConfigurationObjects.DefaultRadical; // ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//result[i] = db;
}
visualizer.PushSampleData(result); // <20><><EFBFBD>µIJ<C2B5><C4B2><EFBFBD><EFBFBD><EFBFBD><E6B4A2> <20><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD> <20><>
}
double CalculateDB(double sample) {
return 20 * Math.Log10(Math.Abs(sample) + 1e-10); // <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
=======
private void Capture_DataAvailable(object? sender, WaveInEventArgs e) {
int length = e.BytesRecorded / 4; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20>ֽ<EFBFBD>)
double[] result = new double[length]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (int i = 0; i < length; i++)
result[i] = BitConverter.ToSingle(e.Buffer, i * 4); // ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
visualizer.PushSampleData(result); // <20><><EFBFBD>µIJ<C2B5><C4B2><EFBFBD><EFBFBD><EFBFBD><E6B4A2> <20><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD> <20><>
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>ʵ<EFBFBD><CAB5>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataTimer_Tick(object? sender, EventArgs e) {
<<<<<<< HEAD
double[] newSpectrumData = visualizer.GetSpectrumData(generalConfigurationObjects.ApplyWindowFunc); // <20>ӿ<EFBFBD><D3BF>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>л<EFBFBD>ȡƵ<C8A1><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
=======
double[] newSpectrumData = visualizer.GetSpectrumData(); // <20>ӿ<EFBFBD><D3BF>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>л<EFBFBD>ȡƵ<C8A1><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
newSpectrumData = Visualizer.MakeSmooth(newSpectrumData, 2); // ƽ<><C6BD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (spectrumData == null) // <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><E6B4A2>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>, <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD>ֵ<EFBFBD><D6B5>ȥ
{
spectrumData = newSpectrumData;
return;
}
for (int i = 0; i < newSpectrumData.Length; i++) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD> "<22>м<EFBFBD>ֵ"
{
double oldData = spectrumData[i];
double newData = newSpectrumData[i];
<<<<<<< HEAD
double lerpData = oldData + (newData - oldData) * generalConfigurationObjects.DefaultOffset; // ÿһ<C3BF><D2BB>ִ<EFBFBD><D6B4>, Ƶ<><C6B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ֵ<EFBFBD>ƶ<EFBFBD> 20% (<28><><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>, <20><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>̫С, Ƶ<>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>ӳٵĸо<C4B8>)
=======
double lerpData = oldData + (newData - oldData) * configurationObject.DefaultOffset; // ÿһ<C3BF><D2BB>ִ<EFBFBD><D6B4>, Ƶ<><C6B5>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ֵ<EFBFBD>ƶ<EFBFBD> 20% (<28><><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>, <20><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>̫С, Ƶ<>׻<EFBFBD><D7BB><EFBFBD><EFBFBD>ӳٵĸо<C4B8>)
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
spectrumData[i] = lerpData;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"><3E><>ͼĿ<CDBC><C4BF></param>
/// <param name="down"><3E>·<EFBFBD><C2B7><EFBFBD>ɫ</param>
/// <param name="up"><3E>Ϸ<EFBFBD><CFB7><EFBFBD>ɫ</param>
/// <param name="spectrumData">Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="pointCount"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="drawingWidth"><3E><><EFBFBD>˵Ŀ<CBB5><C4BF><EFBFBD></param>
/// <param name="xOffset"><3E><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ʼX<CABC><58><EFBFBD><EFBFBD></param>
/// <param name="yOffset"><3E><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ʵY<CAB5><59><EFBFBD><EFBFBD></param>
/// <param name="scale">Ƶ<>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>(ʹ<>ø<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Է<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>)</param>
private void DrawGradient(Graphics g, Color down, Color up, double[] spectrumData, int pointCount, int drawingWidth, float xOffset, float yOffset, double scale) {
GraphicsPath path = new GraphicsPath();
PointF[] points = new PointF[pointCount + 2];
for (int i = 0; i < pointCount; i++) {
double x = i * drawingWidth / pointCount + xOffset;
double y = spectrumData[i * spectrumData.Length / pointCount] * scale + yOffset;
points[i + 1] = new PointF((float)x, (float)y);
}
points[0] = new PointF(xOffset, yOffset);
points[points.Length - 1] = new PointF(xOffset + drawingWidth, yOffset);
path.AddCurve(points);
float upP = (float)points.Min(v => v.Y);
if (Math.Abs(upP - yOffset) < 1)
return;
using Brush brush = new LinearGradientBrush(new PointF(0, yOffset), new PointF(0, upP), down, up);
g.FillPath(brush, path);
}
/// <summary>
/// <20><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"><3E><>ͼĿ<CDBC><C4BF></param>
/// <param name="down"><3E>·<EFBFBD><C2B7><EFBFBD>ɫ</param>
/// <param name="up"><3E>Ϸ<EFBFBD><CFB7><EFBFBD>ɫ</param>
/// <param name="spectrumData">Ƶ<><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="stripCount"><3E><><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="drawingWidth"><3E><>ͼ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD></param>
/// <param name="xOffset"><3E><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʼ X <20><><EFBFBD><EFBFBD></param>
/// <param name="yOffset"><3E><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʼ Y <20><><EFBFBD><EFBFBD></param>
/// <param name="spacing"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>(<28><><EFBFBD><EFBFBD>)</param>
/// <param name="scale"></param>
private void DrawGradientStrips(Graphics g, Color down, Color up, double[] spectrumData, int stripCount, int drawingWidth, float xOffset, float yOffset, float spacing, double scale) {
float stripWidth = (drawingWidth - spacing * stripCount) / stripCount;
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = stripWidth * i + spacing * i + xOffset;
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
<<<<<<< HEAD
points[i] = new PointF((float)x, (float)y);
=======
points[i] = new PointF((float)x, (float)y + (float)(y * configurationObject.DefaultRadical));
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
float upP = (float)points.Min(v => v.Y < 0 ? yOffset + v.Y : yOffset);
float downP = (float)points.Max(v => v.Y < 0 ? yOffset : yOffset + v.Y);
if (downP < yOffset)
downP = yOffset;
if (Math.Abs(upP - downP) < 1)
return;
using Brush brush = new LinearGradientBrush(new PointF(0, downP), new PointF(0, upP), down, up);
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
float y = yOffset;
float height = p.Y;
if (height < 0) {
y += height;
height = -height;
}
<<<<<<< HEAD
g.FillRectangle(brush, new RectangleF(p.X, generalConfigurationObjects.SmoothStripe ? y + stripWidth / 2 : y, stripWidth, height));
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Եƽ<D4B5><C6BD>
if (generalConfigurationObjects.SmoothStripe) {
//<2F><><EFBFBD>ƶ<EFBFBD><C6B6>˵İ<CBB5>Բ<EFBFBD><D4B2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
float radius = stripWidth / 2; // <20><>Բ<EFBFBD>İ뾶
if (height > 0) {
g.FillEllipse(brush, new RectangleF(p.X, y, stripWidth, radius * 2));
} else {
g.FillEllipse(brush, new RectangleF(p.X, y + height, stripWidth, radius * 2));
}
}
=======
g.FillRectangle(brush, new RectangleF(p.X, y, stripWidth, height));
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="pen"></param>
/// <param name="spectrumData"></param>
/// <param name="pointCount"></param>
/// <param name="drawingWidth"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="scale"></param>
private void DrawCurve(Graphics g, Pen pen, double[] spectrumData, int pointCount, int drawingWidth, double xOffset, double yOffset, double scale) {
PointF[] points = new PointF[pointCount];
for (int i = 0; i < pointCount; i++) {
//MessageBox.Show(spectrumData[0].ToString());
if (spectrumData[i] == 0.0) {
continue;
}
double x = i * drawingWidth / pointCount + xOffset;
double y = spectrumData[i * spectrumData.Length / pointCount] * scale + yOffset;
points[i] = new PointF((float)x, (float)y);
}
g.DrawCurve(pen, points);
}
/// <summary>
/// <20><><EFBFBD>򵥵<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="brush"></param>
/// <param name="spectrumData"></param>
/// <param name="stripCount"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="radius"></param>
/// <param name="spacing"></param>
/// <param name="rotation"></param>
/// <param name="scale"></param>
private void DrawCircleStrips(Graphics g, Brush brush, double[] spectrumData, int stripCount, double xOffset, double yOffset, double radius, double spacing, double rotation, double scale) {
double rotationAngle = Math.PI / 180 * rotation;
double blockWidth = MathF.PI * 2 / stripCount; // angle
double stripWidth = blockWidth - MathF.PI / 180 * spacing; // angle
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = blockWidth * i + rotationAngle; // angle
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
points[i] = new PointF((float)x, (float)y);
}
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
double sinStart = Math.Sin(p.X);
double sinEnd = Math.Sin(p.X + stripWidth);
double cosStart = Math.Cos(p.X);
double cosEnd = Math.Cos(p.X + stripWidth);
PointF[] polygon = new PointF[]
{
new PointF((float)(cosStart * radius + xOffset), (float)(sinStart * radius + yOffset)),
new PointF((float)(cosEnd * radius + xOffset), (float)(sinEnd * radius + yOffset)),
new PointF((float)(cosEnd * (radius + p.Y) + xOffset), (float)(sinEnd * (radius + p.Y) + yOffset)),
new PointF((float)(cosStart * (radius + p.Y) + xOffset), (float)(sinStart * (radius + p.Y) + yOffset)),
};
g.FillPolygon(brush, polygon);
}
}
/// <summary>
/// <20><>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="inner"></param>
/// <param name="outer"></param>
/// <param name="spectrumData"></param>
/// <param name="stripCount"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="radius"></param>
/// <param name="spacing"></param>
/// <param name="scale"></param>
private void DrawCircleGradientStrips(Graphics g, Color inner, Color outer, double[] spectrumData, int stripCount, double xOffset, double yOffset, double radius, double spacing, double rotation, double scale) {
double rotationAngle = Math.PI / 180 * rotation;
double blockWidth = Math.PI * 2 / stripCount; // angle
double stripWidth = blockWidth - MathF.PI / 180 * spacing; // angle
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = blockWidth * i + rotationAngle; // angle
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
<<<<<<< HEAD
points[i] = new PointF((float)x, (float)y);
=======
points[i] = new PointF((float)x, (float)y + (float)(y * configurationObject.DefaultRadical));
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
double maxHeight = points.Max(v => v.Y);
double outerRadius = radius + maxHeight;
PointF[] polygon = new PointF[4];
<<<<<<< HEAD
GraphicsPath path = new GraphicsPath();
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
double sinStart = Math.Sin(p.X);
double sinEnd = Math.Sin(p.X + stripWidth);
double cosStart = Math.Cos(p.X);
double cosEnd = Math.Cos(p.X + stripWidth);
PointF
p1 = new PointF((float)(cosStart * radius + xOffset), (float)(sinStart * radius + yOffset)),
p2 = new PointF((float)(cosEnd * radius + xOffset), (float)(sinEnd * radius + yOffset)),
p3 = new PointF((float)(cosEnd * (radius + p.Y) + xOffset), (float)(sinEnd * (radius + p.Y) + yOffset)),
p4 = new PointF((float)(cosStart * (radius + p.Y) + xOffset), (float)(sinStart * (radius + p.Y) + yOffset));
polygon[0] = p1;
polygon[1] = p2;
polygon[2] = p3;
polygon[3] = p4;
<<<<<<< HEAD
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
PointF innerP = new PointF((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
PointF outerP = new PointF((p3.X + p4.X) / 2, (p3.Y + p4.Y) / 2);
Vector2 offset = new Vector2(outerP.X - innerP.X, outerP.Y - innerP.Y);
if (MathF.Sqrt(offset.X * offset.X + offset.Y * offset.Y) < 1) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2BB>̫С
continue;
try {
using LinearGradientBrush brush = new LinearGradientBrush(innerP, outerP, inner, outer); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ bug, <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ա<EFBFBD>ˢ<EFBFBD><CBA2> OutMemoryException
g.FillPolygon(brush, polygon); // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ϲ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣...
} catch { }
}
}
/// <summary>
/// <20><><EFBFBD>򵥵<EFBFBD><F2B5A5B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="g"></param>
/// <param name="brush"></param>
/// <param name="spectrumData"></param>
/// <param name="stripCount"></param>
/// <param name="drawingWidth"></param>
/// <param name="xOffset"></param>
/// <param name="yOffset"></param>
/// <param name="spacing"></param>
/// <param name="scale"></param>
private void DrawStrips(Graphics g, Brush brush, double[] spectrumData, int stripCount, int drawingWidth, float xOffset, float yOffset, float spacing, double scale) {
float stripWidth = (drawingWidth - spacing * stripCount) / stripCount;
PointF[] points = new PointF[stripCount];
for (int i = 0; i < stripCount; i++) {
double x = stripWidth * i + spacing * i + xOffset;
double y = spectrumData[i * spectrumData.Length / stripCount] * scale; // height
points[i] = new PointF((float)x, (float)y);
}
for (int i = 0; i < stripCount; i++) {
PointF p = points[i];
float y = yOffset;
float height = p.Y;
if (height < 0) {
y += height;
height = -height;
}
g.FillRectangle(brush, new RectangleF(p.X, y, stripWidth, height));
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı߿<C4B1>
/// </summary>
/// <param name="g"></param>
/// <param name="inner"></param>
/// <param name="outer"></param>
/// <param name="area"></param>
/// <param name="scale"></param>
/// <param name="width"></param>
private void DrawGradientBorder(Graphics g, Color inner, Color outer, Rectangle area, double scale, float width) {
int thickness = (int)(width * scale);
if (thickness < 1)
return;
Rectangle rect = new Rectangle(area.X, area.Y, area.Width, area.Height);
Rectangle up = new Rectangle(rect.Location, new Size(rect.Width, thickness));
Rectangle down = new Rectangle(new Point(rect.X, (int)(rect.X + rect.Height - scale * width)), new Size(rect.Width, thickness));
Rectangle left = new Rectangle(rect.Location, new Size(thickness, rect.Height));
Rectangle right = new Rectangle(new Point((int)(rect.X + rect.Width - scale * width), rect.Y), new Size(thickness, rect.Height));
LinearGradientBrush upB = new LinearGradientBrush(up, outer, inner, LinearGradientMode.Vertical);
LinearGradientBrush downB = new LinearGradientBrush(down, inner, outer, LinearGradientMode.Vertical);
LinearGradientBrush leftB = new LinearGradientBrush(left, outer, inner, LinearGradientMode.Horizontal);
LinearGradientBrush rightB = new LinearGradientBrush(right, inner, outer, LinearGradientMode.Horizontal);
upB.WrapMode = downB.WrapMode = leftB.WrapMode = rightB.WrapMode = WrapMode.TileFlipXY;
g.FillRectangle(upB, up);
g.FillRectangle(downB, down);
g.FillRectangle(leftB, left);
g.FillRectangle(rightB, right);
}
int colorIndex = 0;
double rotation = 0;
BufferedGraphics? oldBuffer;
<<<<<<< HEAD
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
private void DrawingTimer_Tick(object? sender, EventArgs e) {
if (spectrumData == null)
return;
rotation += .1;
colorIndex++;
Color color1 = allColors[colorIndex % allColors.Length];
Color color2 = allColors[(colorIndex + 200) % allColors.Length];
double[] bassArea = Visualizer.TakeSpectrumOfFrequency(spectrumData, capture.WaveFormat.SampleRate, 250); // <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
double bassScale = bassArea.Average() * 100; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
double extraScale = Math.Min(drawingPanel.Width, drawingPanel.Height) / 6; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD>ϴ<EFBFBD><CFB4>ڴ<EFBFBD>С)
Rectangle border = new Rectangle(Point.Empty, drawingPanel.Size);
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(drawingPanel.CreateGraphics(), drawingPanel.ClientRectangle);
Graphics g = buffer.Graphics;
if (oldBuffer != null) {
//oldBuffer.Render(buffer.Graphics); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʵ<D2AA><CAB5> "<22><>Ӱ" Ч<><D0A7>, <20><>ȡ<EFBFBD><C8A1>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>, <20><><EFBFBD>ҽ<EFBFBD> g.Clear <20><>Ϊ g.FillRectange(xxx, <20><>͸<EFBFBD><CDB8><EFBFBD>ĺ<EFBFBD>ɫ)
oldBuffer.Dispose();
}
using Pen pen = new Pen(Color.Pink); // <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õı<C3B5>
g.SmoothingMode = SmoothingMode.HighQuality; // <20><><EFBFBD>˺<EFBFBD>, <20>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
g.Clear(drawingPanel.BackColor);
<<<<<<< HEAD
if (backgroundImage != null && generalConfigurationObjects.BackImgOrNot) {
g.DrawImage(backgroundImage, 0, 0);
}
if (generalConfigurationObjects.Frame) {
DrawGradientBorder(g, Color.FromArgb(0, color1), color2, border, bassScale, drawingPanel.Width / 10);
}
if (generalConfigurationObjects.Stripe) {
DrawGradientStrips(g, color1, color2, spectrumData, spectrumData.Length, drawingPanel.Width, 0, drawingPanel.Height, generalConfigurationObjects.StripeSpacing, -drawingPanel.Height * 10);
}
if (generalConfigurationObjects.Rotundity) {
DrawCircleGradientStrips(g, color1, color2, spectrumData, spectrumData.Length, drawingPanel.Width / 2, drawingPanel.Height / 2, MathF.Min(drawingPanel.Width, drawingPanel.Height) / 4 + extraScale * bassScale, 1, rotation, drawingPanel.Width / 6 * 10);
}
if (generalConfigurationObjects.WavyLine) {
DrawCurve(g, pen, visualizer.SampleData, visualizer.SampleData.Length, drawingPanel.Width, 0, drawingPanel.Height / 2, MathF.Min(drawingPanel.Height / 10, 100));
}
buffer.Render();
=======
if (backgroundImage != null && configurationObject.BackImgOrNot) {
g.DrawImage(backgroundImage, 0, 0);
}
if (configurationObject.Frame) {
DrawGradientBorder(g, Color.FromArgb(0, color1), color2, border, bassScale, drawingPanel.Width / 10);
}
if (configurationObject.Stripe) {
DrawGradientStrips(g, color1, color2, spectrumData, spectrumData.Length, drawingPanel.Width, 0, drawingPanel.Height, 3, -drawingPanel.Height * 10);
}
if (configurationObject.Rotundity) {
DrawCircleGradientStrips(g, color1, color2, spectrumData, spectrumData.Length, drawingPanel.Width / 2, drawingPanel.Height / 2, MathF.Min(drawingPanel.Width, drawingPanel.Height) / 4 + extraScale * bassScale, 1, rotation, drawingPanel.Width / 6 * 10);
}
if (configurationObject.WavyLine) {
DrawCurve(g, pen, visualizer.SampleData, visualizer.SampleData.Length, drawingPanel.Width, 0, drawingPanel.Height / 2, MathF.Min(drawingPanel.Height / 10, 100));
}
buffer.Render();
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
oldBuffer = buffer; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> buffer (֮<><D6AE><EFBFBD>Բ<EFBFBD>ȫ<EFBFBD><C8AB>ֻʹ<D6BB><CAB9>һ<EFBFBD><D2BB> Buffer <20><><EFBFBD><EFBFBD>Ϊ,,, <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>С, <20><><EFBFBD><EFBFBD>ÿһ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ)
}
private void MainWindow_Load(object sender, EventArgs e) {
<<<<<<< HEAD
SetBounds(offsetx, offsety, width, height);
=======
int iActulaWidth = Screen.PrimaryScreen.Bounds.Width;
int iActulaHeight = Screen.PrimaryScreen.Bounds.Height;
SetBounds(0, 0, iActulaWidth, iActulaHeight);
if (configurationObject.BackImgOrNot && configurationObject.BackgroundImagePath != null) {
//BackgroundImage = Image.FromFile(configurationObject.BackgroundImagePath);
backgroundImage = new Bitmap(iActulaWidth, iActulaHeight);
using (var graphics = Graphics.FromImage(backgroundImage)) {
graphics.DrawImage(Image.FromFile(configurationObject.BackgroundImagePath), 0, 0, iActulaWidth, iActulaHeight);
}
} else {
BackColor = configurationObject.BackgroundColor;
}
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
capture.StartRecording();
dataTimer.Start();
drawingTimer.Start();
}
private void MainWindow_FormClosed(object sender, FormClosedEventArgs e) {
Environment.Exit(0);
}
<<<<<<< HEAD
protected override void WndProc(ref Message m) {
if (appBarManager != null && m.Msg == appBarManager.uCallbackMessage) {
switch ((int)m.WParam) {
case AppBarManager.ABN_FULLSCREENAPP:
bool isFullScreen = m.LParam != IntPtr.Zero;
if (isFullScreen) {
SetFrom.FullScreenWindowCount++;
} else {
SetFrom.FullScreenWindowCount--;
}
ChangeStatus(SetFrom.FullScreenWindowCount <= 0);
FullScreenDetectedEvent(SetFrom.FullScreenWindowCount <= 0);
break;
}
}
base.WndProc(ref m);
}
public void DisposeAppBarManager() {
appBarManager.Dispose();
}
public void ReShow(int x, int y, int width, int height) {
this.width = width;
this.height = height;
SetBounds(x, y, width, height);
LoadBack();
//Win32.SetParent(this.Handle, IntPtr.Zero);
//Win32.SetParent(this.Handle, programIntPtr);
Refresh();
}
public void ReShow(GeneralConfigurationObjects generalConfigurationObjects) {
this.generalConfigurationObjects = generalConfigurationObjects;
LoadBack();
allColors = GetAllHsvColors(generalConfigurationObjects.NumberOfColors);
}
public void ChangeStatus(bool status) {
if (!status && generalConfigurationObjects.AutoStopWallPaper) {
dataTimer.Stop();
drawingTimer.Stop();
return;
}
Invoke(new Action(() => {
dataTimer.Start();
drawingTimer.Start();
}));
}
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
public void LoadBack() {
if (generalConfigurationObjects.BackImgOrNot && generalConfigurationObjects.BackgroundImagePath != null) {
//BackgroundImage = Image.FromFile(generalConfigurationObjects.BackgroundImagePath);
using (var originalImage = Image.FromFile(generalConfigurationObjects.BackgroundImagePath)) {
double widthScale = (double)width / originalImage.Width;
double heightScale = (double)height / originalImage.Height;
double scale = Math.Min(widthScale, heightScale);
int newWidth = (int)(originalImage.Width * scale);
int newHeight = (int)(originalImage.Height * scale);
int bgioffsetX = (width - newWidth) / 2;
int bgioffsetY = (height - newHeight) / 2;
backgroundImage = new Bitmap(width, height);
using (var graphics = Graphics.FromImage(backgroundImage)) {
graphics.DrawImage(originalImage, bgioffsetX, bgioffsetY, newWidth, newHeight);
}
}
} else {
BackColor = generalConfigurationObjects.BackgroundColor;
}
}
=======
private void DrawingPanel_MouseDoubleClick(object sender, MouseEventArgs e) {
//WindowState = WindowState != FormWindowState.Maximized ? FormWindowState.Maximized : FormWindowState.Normal;
//FormBorderStyle = WindowState == FormWindowState.Maximized ? FormBorderStyle.None : FormBorderStyle.Sizable;
}
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
public void Init() {
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ش<EFBFBD><D8B4>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>
programIntPtr = Win32.FindWindow("Progman", null);
// <20><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>Ч
if (programIntPtr != IntPtr.Zero) {
IntPtr result = IntPtr.Zero;
// <20><> Program Manager <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD> 0x52c <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ0x3e8<65><38>1<EFBFBD><EFBFBD><EBA3A9>
Win32.SendMessageTimeout(programIntPtr, 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 0x3e8, result);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Win32.EnumWindows((hwnd, lParam) => {
// <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD> SHELLDLL_DefView <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD> WorkerW
if (Win32.FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero) {
// <20>ҵ<EFBFBD><D2B5><EFBFBD>ǰ WorkerW <20><><EFBFBD>ڵģ<DAB5><C4A3><EFBFBD>һ<EFBFBD><D2BB> WorkerW <20><><EFBFBD>ڡ<EFBFBD>
IntPtr tempHwnd = Win32.FindWindowEx(IntPtr.Zero, hwnd, "WorkerW", null);
<<<<<<< HEAD
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Win32.ShowWindow(tempHwnd, 0);
}
return true;
}, IntPtr.Zero);
}
}
<<<<<<< HEAD
}
=======
private void ExitWallpaperToolStripMenuItem_Click(object sender, EventArgs e) {
Environment.Exit(0);
}
private void SettingSToolStripMenuItem_Click(object sender, EventArgs e) {
SetFrom setFrom = SetFrom.ShowSetFrom(this);
if (!setFrom.Visible) {
setFrom.ShowDialog();
} else {
setFrom.WindowState = FormWindowState.Normal;
setFrom.Activate();
}
}
private void MainWindow_SizeChanged(object sender, EventArgs e) {
int iActulaWidth = Screen.PrimaryScreen.Bounds.Width;
int iActulaHeight = Screen.PrimaryScreen.Bounds.Height;
SetBounds(0, 0, iActulaWidth, iActulaHeight);
}
private void ReStartAPPRToolStripMenuItem_Click(object sender, EventArgs e) {
Process.Start(Application.StartupPath + Application.ProductName + ".exe");
Process.GetCurrentProcess()?.Kill();
}
private void AboutUsToolStripMenuItem_Click(object sender, EventArgs e) {
new VersionInformationForm().ShowDialog();
}
}
public static class Win32 {
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string className, string winName);
[DllImport("user32.dll")]
public static extern IntPtr SendMessageTimeout(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr lParam, uint fuFlage, uint timeout, IntPtr result);
[DllImport("user32.dll")]
public static extern bool EnumWindows(EnumWindowsProc proc, IntPtr lParam);
public delegate bool EnumWindowsProc(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string className, string winName);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hwnd, IntPtr parentHwnd);
}
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="dataTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>67, 17</value>
</metadata>
<metadata name="drawingTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>180, 14</value>
</metadata>
</root>

View File

@@ -0,0 +1,230 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="dataTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<<<<<<< HEAD
<value>67, 17</value>
</metadata>
<metadata name="drawingTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>180, 14</value>
</metadata>
=======
<value>17, 17</value>
</metadata>
<metadata name="drawingTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>155, 18</value>
</metadata>
<metadata name="contextMenuStripSystemTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>330, 17</value>
</metadata>
<metadata name="notifyIconSystemTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>495, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIconSystemTray.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAAAAAAAEAIADDEwAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAlw
SFlzAAAOxAAADsQBlSsOGwAAE3VJREFUeJzt3XuUJFV9B/Dvr+dR1cuywspDke3qXRAwAYnyxihgICcY
TESRqFE4RwWTg8h2zbKAIu6JSJZ1poZHkJz1eAI+IyBgApiokOhRBBVBMfFgkJ1qYBUFVhZ2u2pmun75
g1nZR1VPP253V8/9fv7sW/f270xPfbtefS9ARERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERE85F+F0C9ccCq5/epJyNfVOCU7K30U2FQvLR3VVG/
MQAWuP0runRI4o0AnKY7CT4TTrjnda8qygsGwALmVaIAgkq7/cPA5f/HAscPeIHy/Og5AEs6HYchsLDx
w12AjjhXR55eHE+bGo8hsHDxg12APD9SowOK/CCccI43OiblwnC/CyCzSmPxGdB59n+Vt4eTzm3b9blB
VM/O3l6PM1Yg5QqPABaYRt/+ClxQDdxr2unL04CFiR/qApO1ExdET9gwUfxuu/0BfDYM3HM7Ko5yh6cA
C0hpLLoe6bvvxmZ2fgCoq7x2SPRnKU3nAGAALDAMgAVEFKenvV6oz76+2TGemHQe9vzIXFGUawyAhWXf
tBc3XL34qRbH+T2APTovh/KOAUBpngEDwAoMACKLMQCILMYAILIYA4DIYgwAIosxAIgsxgAgshgDgMhi
DAAiizEAiCzGACCyGAOAyGIMACKLMQCILMYAILIYA4DIYgwAIosxAIgsxgAgshgDgMhiDAAiizEAumzZ
6i37DdWHj04Uh0Pxi/pI/d4n1y16ot915cX+FS0OIXqPihwlioNRwI8U8sPqhHNLv2uzAQOgCzy/dhIg
dwFwMQso9MU12AQYni3gpYU39CthUHxP/yrtn9JYdIEorgJiAPKHvw8UJwr0D38jAdZNBe5FfSx1QePa
gAYdeP7ze8+MjPwawFCLXYMwcMc6ff+sdf1aXdjT86NHARzQ6TiZ41fi+yB6TCt9FPq+alD8oon3p5fw
CMCQciX+6xnR29vs7pcq8f3VSecmo0XlzRoteJvjOjIWMGxEIF/w/GhNGLgHdqEyazEADChXamer6A2d
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
</value>
</data>
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
</root>

176
AudioVisualizer/MyPanel.cs Normal file
View File

@@ -0,0 +1,176 @@
using System.ComponentModel;
namespace AudioWallpaper {
public partial class PanelEx : Control {
private float _iBorderThickness = 1f;
private float _iOpacity = 1f;
private Brush _brushBg = null;
private Pen _penFg = null;
public PanelEx() {
this.SetStyle(ControlStyles.SupportsTransparentBackColor |
ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
BackgroundBrush = Brushes.Transparent;
ForegroundPen = Pens.Black;
}
#region Propertys
#region HideParent
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public override string Text {
get { return base.Text; }
set { base.Text = value; }
}
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public override Image BackgroundImage {
get { return base.BackgroundImage; }
set { base.BackgroundImage = value; }
}
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public override ImageLayout BackgroundImageLayout {
get {
return base.BackgroundImageLayout;
}
set {
base.BackgroundImageLayout = value;
}
}
#endregion
public override Color BackColor {
get {
return base.BackColor;
}
set {
base.BackColor = value;
ResetBgBrush();
}
}
//[EditorAttribute(typeof(BrushTypeEditor), typeof(System.Drawing.Design.UITypeEditor))]
//public double Background
//{
// get;
// set;
//}
public override Color ForeColor {
get {
return base.ForeColor;
}
set {
base.ForeColor = value;
ResetFgPen();
}
}
public float BorderThickness {
get { return _iBorderThickness; }
set {
if (value < 0) {
throw new Exception("Out off range");
}
_iBorderThickness = value;
ResetFgPen();
ResetDrawRect();
}
}
public virtual float RotateAngle {
get;
set;
}
public float Opacity {
get { return _iOpacity; }
set {
if (value > 1 || value < 0) {
throw new Exception("Out of range,the Value be in [0,1]");
} else {
_iOpacity = value;
ResetBrushes();
}
}
}
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle = 0x20;
return cp;
}
}
protected virtual Brush BackgroundBrush {
get { return _brushBg; }
set { _brushBg = value; }
}
protected virtual Pen ForegroundPen {
get { return _penFg; }
set { _penFg = value; }
}
protected virtual RectangleF DrawRect {
get;
set;
}
#endregion
#region Methods
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
}
protected override void OnSizeChanged(EventArgs e) {
base.OnSizeChanged(e);
ResetDrawRect();
}
protected override void OnPaddingChanged(EventArgs e) {
base.OnPaddingChanged(e);
ResetDrawRect();
}
protected void ResetBrushes() {
ResetBgBrush();
ResetFgPen();
}
protected void ResetBgBrush() {
BackgroundBrush = new SolidBrush(GetOpacityColor(BackColor, Opacity));
}
protected void ResetFgPen() {
ForegroundPen = new Pen(GetOpacityColor(ForeColor, Opacity), BorderThickness);
}
protected Color GetOpacityColor(Color baseColor, float op) {
return Color.FromArgb(Convert.ToInt32(op * baseColor.A), baseColor);
}
private void ResetDrawRect() {
float dbwidth = 2 * BorderThickness;
float halfwidth = BorderThickness / 2;
int paddingWhith = Padding.Left + Padding.Right;
int paddingHeight = Padding.Top + Padding.Bottom;
if (dbwidth > Width - paddingWhith || dbwidth > Height - paddingHeight) {
DrawRect = this.Bounds;
} else {
DrawRect = new RectangleF(Padding.Left + halfwidth,
Padding.Top + halfwidth,
Width - BorderThickness - paddingWhith,
Height - BorderThickness - paddingHeight);
}
}
#endregion
}
}

View File

@@ -0,0 +1,70 @@
using System.Runtime.InteropServices;
namespace AudioWallpaper {
internal static class Program {
[DllImport("user32.dll")]
private static extern bool FlashWindow(IntPtr hWnd, bool bInvert);
[DllImport("user32.dll")]
private static extern bool FlashWindowEx(int pfwi);
/// <summary>
/// The main entry point for the application.
/// </summary>
///
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();//<2F>ͷŹ<CDB7><C5B9><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
[STAThread]
static void Main(String[] args) {
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
bool createdNew;
bool DoesTheGuardianExist = false;
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ψһ<CEA8>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>
using (Mutex mutex = new Mutex(true, "{C8F8E5D9-6F05-4F92-BE10-DF7A4F5F97FB}", out createdNew)) {
if (createdNew) {
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//if (args.Length < 1) {
// mutex.ReleaseMutex();
// return;
//}
//if (!args[0].Equals("ManagerStart")) {
// mutex.ReleaseMutex();
// return;
//}
//if (!args[1].Equals("1")) {
// mutex.ReleaseMutex();
// return;
//}
#if !DEBUG
Mutex Dmutex = new Mutex(true, "{C9F9E5D9-6F05-4F92-BE10-DF7A4F5F97FB}", out DoesTheGuardianExist);
if (DoesTheGuardianExist) {
Dmutex.ReleaseMutex();
Dmutex.Dispose();
mutex.ReleaseMutex();
return;
}
Dmutex.Dispose();
#endif
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨
AllocConsole();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B4B4><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ǰû<C7B0><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ApplicationConfiguration.Initialize();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FormManager formManager = new FormManager();
Application.Run();
//<2F>ͷſ<CDB7><C5BF><EFBFBD>̨
FreeConsole();
mutex.ReleaseMutex(); // <20>ͷŻ<CDB7><C5BB><EFBFBD><EFBFBD><EFBFBD>
}
}
}
}
}

View File

@@ -0,0 +1,92 @@
using System.Runtime.InteropServices;
<<<<<<< HEAD
namespace AudioWallpaper {
=======
namespace AudioVisualizer {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
internal static class Program {
[DllImport("user32.dll")]
private static extern bool FlashWindow(IntPtr hWnd, bool bInvert);
[DllImport("user32.dll")]
private static extern bool FlashWindowEx(int pfwi);
/// <summary>
/// The main entry point for the application.
/// </summary>
<<<<<<< HEAD
///
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();//<2F>ͷŹ<CDB7><C5B9><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
[STAThread]
static void Main(String[] args) {
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
bool createdNew;
bool DoesTheGuardianExist = false;
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ψһ<CEA8>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>
using (Mutex mutex = new Mutex(true, "{C8F8E5D9-6F05-4F92-BE10-DF7A4F5F97FB}", out createdNew)) {
if (createdNew) {
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//if (args.Length < 1) {
// mutex.ReleaseMutex();
// return;
//}
//if (!args[0].Equals("ManagerStart")) {
// mutex.ReleaseMutex();
// return;
//}
//if (!args[1].Equals("1")) {
// mutex.ReleaseMutex();
// return;
//}
#if !DEBUG
Mutex Dmutex = new Mutex(true, "{C9F9E5D9-6F05-4F92-BE10-DF7A4F5F97FB}", out DoesTheGuardianExist);
if (DoesTheGuardianExist) {
Dmutex.ReleaseMutex();
Dmutex.Dispose();
mutex.ReleaseMutex();
return;
}
Dmutex.Dispose();
#endif
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨
AllocConsole();
=======
[STAThread]
static void Main() {
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
bool createdNew;
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ψһ<CEA8>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>
using (Mutex mutex = new Mutex(true, "{C8F8E5D9-6F05-4F92-BE10-DF7A4F5F97FB}", out createdNew)) {
if (createdNew) {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B4B4><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ǰû<C7B0><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ApplicationConfiguration.Initialize();
<<<<<<< HEAD
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FormManager formManager = new FormManager();
Application.Run();
//<2F>ͷſ<CDB7><C5BF><EFBFBD>̨
FreeConsole();
=======
Application.Run(new MainWindow());
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
mutex.ReleaseMutex(); // <20>ͷŻ<CDB7><C5BB><EFBFBD><EFBFBD><EFBFBD>
}
}
}
<<<<<<< HEAD
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
}

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\Release\net6.0-windows\publish\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
</Project>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\Release\net6.0-windows\publish\win-x64\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
<TargetFramework>net6.0-windows</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<History>True|2024-09-16T05:28:12.4883887Z;False|2024-09-15T14:54:39.4096870+08:00;True|2024-07-06T21:39:30.9825159+08:00;True|2024-07-03T04:13:41.1394986+08:00;False|2024-07-03T04:12:59.2893619+08:00;True|2024-07-01T05:06:24.1367448+08:00;True|2024-07-01T05:02:36.4823466+08:00;True|2024-07-01T04:46:59.2121010+08:00;True|2024-01-21T20:14:21.6948634+08:00;True|2024-01-17T19:27:25.9806490+08:00;False|2024-01-17T19:25:05.5783143+08:00;True|2023-12-22T11:58:53.2362501+08:00;True|2023-12-22T10:49:44.8516367+08:00;True|2023-12-22T10:49:03.8170596+08:00;True|2023-12-22T10:36:46.6196209+08:00;True|2023-12-22T10:36:12.8935472+08:00;True|2023-09-27T08:32:05.6491812+08:00;True|2023-09-26T11:05:25.7324987+08:00;True|2023-09-26T11:05:03.1754028+08:00;True|2023-09-26T11:04:18.9806738+08:00;True|2023-09-26T11:03:15.6077214+08:00;True|2023-09-26T10:43:57.0321057+08:00;True|2023-09-26T10:42:48.3370646+08:00;True|2023-09-26T10:39:54.8449024+08:00;True|2023-09-22T12:00:16.8730995+08:00;True|2023-09-22T11:00:49.7372040+08:00;True|2023-09-22T10:59:01.9330159+08:00;True|2023-09-22T10:39:59.9135149+08:00;True|2023-09-20T19:22:38.0523342+08:00;True|2023-09-20T19:02:31.0651458+08:00;True|2023-09-20T08:50:23.8413611+08:00;True|2023-09-20T08:48:53.9236985+08:00;True|2023-09-20T08:48:06.8484981+08:00;True|2023-09-20T08:47:08.4124127+08:00;True|2023-09-19T20:19:54.7069919+08:00;True|2023-09-19T20:15:39.3422047+08:00;True|2023-09-19T20:03:01.7485613+08:00;True|2023-09-19T20:01:49.9576023+08:00;True|2023-09-19T15:02:02.6768088+08:00;True|2023-09-19T14:41:38.2193731+08:00;True|2023-09-19T14:34:19.6704409+08:00;True|2023-09-19T14:31:22.8745473+08:00;True|2023-09-19T14:30:40.4650538+08:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,113 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace AudioWallpaper.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AudioWallpaper.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap exit {
get {
object obj = ResourceManager.GetObject("exit", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
/// </summary>
internal static System.Drawing.Icon FM_channel {
get {
object obj = ResourceManager.GetObject("FM_channel", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap reboot {
get {
object obj = ResourceManager.GetObject("reboot", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap setting {
get {
object obj = ResourceManager.GetObject("setting", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap VersionInformation {
get {
object obj = ResourceManager.GetObject("VersionInformation", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -0,0 +1,124 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
<<<<<<< HEAD
namespace AudioWallpaper.Properties {
=======
namespace AudioVisualizer.Properties {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
<<<<<<< HEAD
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AudioWallpaper.Properties.Resources", typeof(Resources).Assembly);
=======
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AudioVisualizer.Properties.Resources", typeof(Resources).Assembly);
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap exit {
get {
object obj = ResourceManager.GetObject("exit", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
<<<<<<< HEAD
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
/// </summary>
internal static System.Drawing.Icon FM_channel {
get {
object obj = ResourceManager.GetObject("FM_channel", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap reboot {
get {
object obj = ResourceManager.GetObject("reboot", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap setting {
get {
object obj = ResourceManager.GetObject("setting", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap VersionInformation {
get {
object obj = ResourceManager.GetObject("VersionInformation", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="VersionInformation" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\VersionInformation.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="reboot" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\reboot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="setting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="exit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FM_channel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FM-channel.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="VersionInformation" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\VersionInformation.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="reboot" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\reboot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="setting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="exit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<<<<<<< HEAD
<data name="FM_channel" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FM-channel.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

953
AudioVisualizer/SetForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,953 @@
namespace AudioWallpaper {
partial class SetFrom {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetFrom));
tabControl = new TabControl();
Routine = new TabPage();
MultiMonitorCompatibility = new GroupBox();
RoutineCheckBoxAutoStop = new CheckBox();
LableRoutineAutoStop = new Label();
checkBoxUsingUnifiedConfiguration = new CheckBox();
LabelUsingUnifiedConfiguration = new Label();
DisplayName = new Label();
checkBoxIsShow = new CheckBox();
IsTheMonitorEnabled = new Label();
DisplayRegistrationName = new Label();
groupBoxColor = new GroupBox();
labelBackgroundImg = new Label();
BackgroundImage = new PictureBox();
labelBackImgOrBackColor = new Label();
checkBoxImgOrColor = new CheckBox();
labelBackgroundCOlor = new Label();
BackgroundColor = new PictureBox();
checkBoxUseDefault = new CheckBox();
labelUseSystemColor = new Label();
labelNumberOfColors = new Label();
numericUpDownNumberOfColors = new NumericUpDown();
StartColor = new PictureBox();
labelMonochrome = new Label();
StopColor = new PictureBox();
checkBoxMonochrome = new CheckBox();
labelStartColor = new Label();
labelStopColor = new Label();
buttonReset = new Button();
buttonSave = new Button();
Display = new GroupBox();
label2 = new Label();
checkBoxSmoothStripe = new CheckBox();
checkBoxBottomEdge = new CheckBox();
checkBoxRotundity = new CheckBox();
checkBoxFrame = new CheckBox();
checkBoxWavyLine = new CheckBox();
labelBottomEdge = new Label();
labelRotundity = new Label();
labelFrame = new Label();
labelWaveLineDisplay = new Label();
Effect = new GroupBox();
labelWindowFuncText = new Label();
selectWindowFunc = new ComboBox();
numericUpDownFourierVariation = new NumericUpDown();
labelFourierVariation = new Label();
numericUpDownSpectralShift = new NumericUpDown();
numericUpDownRhythmicMagnification = new NumericUpDown();
labelSpectralShift = new Label();
labelRhythmicMagnification = new Label();
Other = new TabPage();
ThirdParty = new GroupBox();
CheckBoxAutoStop = new CheckBox();
OtherDisplayName = new Label();
LabelAutoStop = new Label();
label3 = new Label();
panelEx1 = new PanelEx();
VideoRateLabel = new Label();
trackBarVideoVolume = new TrackBar();
VideoVolumeLabel = new Label();
trackBarVideoRate = new TrackBar();
videoView1 = new LibVLCSharp.WinForms.VideoView();
UseOtherWallpaper = new CheckBox();
label1 = new Label();
OtherResetBtn = new Button();
OtherSaveBtn = new Button();
label4 = new Label();
numericUpDownStripeSpacing = new NumericUpDown();
tabControl.SuspendLayout();
Routine.SuspendLayout();
MultiMonitorCompatibility.SuspendLayout();
groupBoxColor.SuspendLayout();
((System.ComponentModel.ISupportInitialize)BackgroundImage).BeginInit();
((System.ComponentModel.ISupportInitialize)BackgroundColor).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownNumberOfColors).BeginInit();
((System.ComponentModel.ISupportInitialize)StartColor).BeginInit();
((System.ComponentModel.ISupportInitialize)StopColor).BeginInit();
Display.SuspendLayout();
Effect.SuspendLayout();
((System.ComponentModel.ISupportInitialize)numericUpDownFourierVariation).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownSpectralShift).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownRhythmicMagnification).BeginInit();
Other.SuspendLayout();
ThirdParty.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackBarVideoVolume).BeginInit();
((System.ComponentModel.ISupportInitialize)trackBarVideoRate).BeginInit();
((System.ComponentModel.ISupportInitialize)videoView1).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownStripeSpacing).BeginInit();
SuspendLayout();
//
// tabControl
//
tabControl.Controls.Add(Routine);
tabControl.Controls.Add(Other);
tabControl.Dock = DockStyle.Fill;
tabControl.Location = new Point(0, 0);
tabControl.Name = "tabControl";
tabControl.SelectedIndex = 0;
tabControl.Size = new Size(313, 722);
tabControl.TabIndex = 0;
//
// Routine
//
Routine.Controls.Add(MultiMonitorCompatibility);
Routine.Controls.Add(groupBoxColor);
Routine.Controls.Add(buttonReset);
Routine.Controls.Add(buttonSave);
Routine.Controls.Add(Display);
Routine.Controls.Add(Effect);
Routine.Location = new Point(4, 26);
Routine.Name = "Routine";
Routine.Padding = new Padding(3);
Routine.Size = new Size(305, 692);
Routine.TabIndex = 0;
Routine.Text = "常规";
Routine.UseVisualStyleBackColor = true;
//
// MultiMonitorCompatibility
//
MultiMonitorCompatibility.Controls.Add(RoutineCheckBoxAutoStop);
MultiMonitorCompatibility.Controls.Add(LableRoutineAutoStop);
MultiMonitorCompatibility.Controls.Add(checkBoxUsingUnifiedConfiguration);
MultiMonitorCompatibility.Controls.Add(LabelUsingUnifiedConfiguration);
MultiMonitorCompatibility.Controls.Add(DisplayName);
MultiMonitorCompatibility.Controls.Add(checkBoxIsShow);
MultiMonitorCompatibility.Controls.Add(IsTheMonitorEnabled);
MultiMonitorCompatibility.Controls.Add(DisplayRegistrationName);
MultiMonitorCompatibility.Location = new Point(8, 537);
MultiMonitorCompatibility.Name = "MultiMonitorCompatibility";
MultiMonitorCompatibility.Size = new Size(289, 122);
MultiMonitorCompatibility.TabIndex = 5;
MultiMonitorCompatibility.TabStop = false;
MultiMonitorCompatibility.Text = "多显示器";
//
// RoutineCheckBoxAutoStop
//
RoutineCheckBoxAutoStop.AutoSize = true;
RoutineCheckBoxAutoStop.Location = new Point(225, 97);
RoutineCheckBoxAutoStop.Name = "RoutineCheckBoxAutoStop";
RoutineCheckBoxAutoStop.Size = new Size(15, 14);
RoutineCheckBoxAutoStop.TabIndex = 19;
RoutineCheckBoxAutoStop.UseVisualStyleBackColor = true;
//
// LableRoutineAutoStop
//
LableRoutineAutoStop.AutoSize = true;
LableRoutineAutoStop.Location = new Point(18, 96);
LableRoutineAutoStop.Name = "LableRoutineAutoStop";
LableRoutineAutoStop.Size = new Size(140, 17);
LableRoutineAutoStop.TabIndex = 18;
LableRoutineAutoStop.Text = "其它应用全屏时暂停壁纸";
//
// checkBoxUsingUnifiedConfiguration
//
checkBoxUsingUnifiedConfiguration.AutoSize = true;
checkBoxUsingUnifiedConfiguration.Location = new Point(132, 73);
checkBoxUsingUnifiedConfiguration.Name = "checkBoxUsingUnifiedConfiguration";
checkBoxUsingUnifiedConfiguration.Size = new Size(15, 14);
checkBoxUsingUnifiedConfiguration.TabIndex = 17;
checkBoxUsingUnifiedConfiguration.UseVisualStyleBackColor = true;
checkBoxUsingUnifiedConfiguration.CheckedChanged += checkBoxUsingUnifiedConfiguration_CheckedChanged;
//
// LabelUsingUnifiedConfiguration
//
LabelUsingUnifiedConfiguration.AutoSize = true;
LabelUsingUnifiedConfiguration.Location = new Point(18, 71);
LabelUsingUnifiedConfiguration.Name = "LabelUsingUnifiedConfiguration";
LabelUsingUnifiedConfiguration.Size = new Size(80, 17);
LabelUsingUnifiedConfiguration.TabIndex = 16;
LabelUsingUnifiedConfiguration.Text = "使用统一配置";
//
// DisplayName
//
DisplayName.AutoSize = true;
DisplayName.Location = new Point(104, 19);
DisplayName.Name = "DisplayName";
DisplayName.Size = new Size(68, 17);
DisplayName.TabIndex = 15;
DisplayName.Text = "没有初始化";
//
// checkBoxIsShow
//
checkBoxIsShow.AutoSize = true;
checkBoxIsShow.Location = new Point(132, 47);
checkBoxIsShow.Name = "checkBoxIsShow";
checkBoxIsShow.Size = new Size(15, 14);
checkBoxIsShow.TabIndex = 14;
checkBoxIsShow.UseVisualStyleBackColor = true;
checkBoxIsShow.CheckedChanged += checkBoxIsShow_CheckedChanged;
//
// IsTheMonitorEnabled
//
IsTheMonitorEnabled.AutoSize = true;
IsTheMonitorEnabled.Location = new Point(18, 45);
IsTheMonitorEnabled.Name = "IsTheMonitorEnabled";
IsTheMonitorEnabled.Size = new Size(80, 17);
IsTheMonitorEnabled.TabIndex = 1;
IsTheMonitorEnabled.Text = "启用律动壁纸";
//
// DisplayRegistrationName
//
DisplayRegistrationName.AutoSize = true;
DisplayRegistrationName.Location = new Point(18, 19);
DisplayRegistrationName.Name = "DisplayRegistrationName";
DisplayRegistrationName.Size = new Size(80, 17);
DisplayRegistrationName.TabIndex = 0;
DisplayRegistrationName.Text = "显示器注册名";
//
// groupBoxColor
//
groupBoxColor.Controls.Add(labelBackgroundImg);
groupBoxColor.Controls.Add(BackgroundImage);
groupBoxColor.Controls.Add(labelBackImgOrBackColor);
groupBoxColor.Controls.Add(checkBoxImgOrColor);
groupBoxColor.Controls.Add(labelBackgroundCOlor);
groupBoxColor.Controls.Add(BackgroundColor);
groupBoxColor.Controls.Add(checkBoxUseDefault);
groupBoxColor.Controls.Add(labelUseSystemColor);
groupBoxColor.Controls.Add(labelNumberOfColors);
groupBoxColor.Controls.Add(numericUpDownNumberOfColors);
groupBoxColor.Controls.Add(StartColor);
groupBoxColor.Controls.Add(labelMonochrome);
groupBoxColor.Controls.Add(StopColor);
groupBoxColor.Controls.Add(checkBoxMonochrome);
groupBoxColor.Controls.Add(labelStartColor);
groupBoxColor.Controls.Add(labelStopColor);
groupBoxColor.Location = new Point(8, 147);
groupBoxColor.Name = "groupBoxColor";
groupBoxColor.Size = new Size(289, 256);
groupBoxColor.TabIndex = 4;
groupBoxColor.TabStop = false;
groupBoxColor.Text = "颜色信息";
//
// labelBackgroundImg
//
labelBackgroundImg.AutoSize = true;
labelBackgroundImg.Location = new Point(16, 157);
labelBackgroundImg.Name = "labelBackgroundImg";
labelBackgroundImg.Size = new Size(56, 17);
labelBackgroundImg.TabIndex = 22;
labelBackgroundImg.Text = "背景图片";
//
// BackgroundImage
//
BackgroundImage.BackgroundImageLayout = ImageLayout.Zoom;
BackgroundImage.BorderStyle = BorderStyle.FixedSingle;
BackgroundImage.Cursor = Cursors.Hand;
BackgroundImage.Enabled = false;
BackgroundImage.Location = new Point(80, 157);
BackgroundImage.Name = "BackgroundImage";
BackgroundImage.Size = new Size(160, 90);
BackgroundImage.SizeMode = PictureBoxSizeMode.Zoom;
BackgroundImage.TabIndex = 21;
BackgroundImage.TabStop = false;
BackgroundImage.Click += BackgroundImage_Click;
//
// labelBackImgOrBackColor
//
labelBackImgOrBackColor.AutoSize = true;
labelBackImgOrBackColor.Location = new Point(163, 125);
labelBackImgOrBackColor.Name = "labelBackImgOrBackColor";
labelBackImgOrBackColor.Size = new Size(56, 17);
labelBackImgOrBackColor.TabIndex = 20;
labelBackImgOrBackColor.Text = "是否图片";
//
// checkBoxImgOrColor
//
checkBoxImgOrColor.AutoSize = true;
checkBoxImgOrColor.Location = new Point(225, 126);
checkBoxImgOrColor.Name = "checkBoxImgOrColor";
checkBoxImgOrColor.Size = new Size(15, 14);
checkBoxImgOrColor.TabIndex = 19;
checkBoxImgOrColor.UseVisualStyleBackColor = true;
checkBoxImgOrColor.CheckedChanged += ImgOrColor_CheckedChanged;
//
// labelBackgroundCOlor
//
labelBackgroundCOlor.AutoSize = true;
labelBackgroundCOlor.Location = new Point(16, 125);
labelBackgroundCOlor.Name = "labelBackgroundCOlor";
labelBackgroundCOlor.Size = new Size(56, 17);
labelBackgroundCOlor.TabIndex = 18;
labelBackgroundCOlor.Text = "背景颜色";
//
// BackgroundColor
//
BackgroundColor.BorderStyle = BorderStyle.FixedSingle;
BackgroundColor.Cursor = Cursors.Hand;
BackgroundColor.Location = new Point(99, 125);
BackgroundColor.Name = "BackgroundColor";
BackgroundColor.Size = new Size(45, 17);
BackgroundColor.TabIndex = 17;
BackgroundColor.TabStop = false;
BackgroundColor.Click += BackgroundColor_Click;
//
// checkBoxUseDefault
//
checkBoxUseDefault.AutoSize = true;
checkBoxUseDefault.Location = new Point(99, 30);
checkBoxUseDefault.Name = "checkBoxUseDefault";
checkBoxUseDefault.Size = new Size(15, 14);
checkBoxUseDefault.TabIndex = 16;
checkBoxUseDefault.UseVisualStyleBackColor = true;
checkBoxUseDefault.CheckedChanged += checkBoxUseDefault_CheckedChanged;
//
// labelUseSystemColor
//
labelUseSystemColor.AutoSize = true;
labelUseSystemColor.Location = new Point(16, 30);
labelUseSystemColor.Name = "labelUseSystemColor";
labelUseSystemColor.Size = new Size(56, 17);
labelUseSystemColor.TabIndex = 15;
labelUseSystemColor.Text = "使用默认";
//
// labelNumberOfColors
//
labelNumberOfColors.AutoSize = true;
labelNumberOfColors.Location = new Point(16, 90);
labelNumberOfColors.Name = "labelNumberOfColors";
labelNumberOfColors.Size = new Size(56, 17);
labelNumberOfColors.TabIndex = 14;
labelNumberOfColors.Text = "颜色数量";
//
// numericUpDownNumberOfColors
//
numericUpDownNumberOfColors.Font = new Font("Microsoft YaHei UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
numericUpDownNumberOfColors.Location = new Point(99, 89);
numericUpDownNumberOfColors.Maximum = new decimal(new int[] { 51200, 0, 0, 0 });
numericUpDownNumberOfColors.Minimum = new decimal(new int[] { 4, 0, 0, 0 });
numericUpDownNumberOfColors.Name = "numericUpDownNumberOfColors";
numericUpDownNumberOfColors.Size = new Size(120, 23);
numericUpDownNumberOfColors.TabIndex = 13;
numericUpDownNumberOfColors.Value = new decimal(new int[] { 4, 0, 0, 0 });
//
// StartColor
//
StartColor.BorderStyle = BorderStyle.FixedSingle;
StartColor.Cursor = Cursors.Hand;
StartColor.Location = new Point(99, 59);
StartColor.Name = "StartColor";
StartColor.Size = new Size(45, 17);
StartColor.TabIndex = 7;
StartColor.TabStop = false;
StartColor.Click += StartColor_Click;
//
// labelMonochrome
//
labelMonochrome.AutoSize = true;
labelMonochrome.Location = new Point(163, 30);
labelMonochrome.Name = "labelMonochrome";
labelMonochrome.Size = new Size(56, 17);
labelMonochrome.TabIndex = 12;
labelMonochrome.Text = "是否单色";
//
// StopColor
//
StopColor.BorderStyle = BorderStyle.FixedSingle;
StopColor.Cursor = Cursors.Hand;
StopColor.Location = new Point(225, 59);
StopColor.Name = "StopColor";
StopColor.Size = new Size(45, 17);
StopColor.TabIndex = 8;
StopColor.TabStop = false;
StopColor.Click += StopColor_Click;
//
// checkBoxMonochrome
//
checkBoxMonochrome.AutoSize = true;
checkBoxMonochrome.Location = new Point(225, 32);
checkBoxMonochrome.Name = "checkBoxMonochrome";
checkBoxMonochrome.Size = new Size(15, 14);
checkBoxMonochrome.TabIndex = 11;
checkBoxMonochrome.UseVisualStyleBackColor = true;
checkBoxMonochrome.CheckedChanged += checkBoxMonochrome_CheckedChanged;
//
// labelStartColor
//
labelStartColor.AutoSize = true;
labelStartColor.Location = new Point(16, 59);
labelStartColor.Name = "labelStartColor";
labelStartColor.Size = new Size(56, 17);
labelStartColor.TabIndex = 9;
labelStartColor.Text = "起始颜色";
//
// labelStopColor
//
labelStopColor.AutoSize = true;
labelStopColor.Location = new Point(163, 59);
labelStopColor.Name = "labelStopColor";
labelStopColor.Size = new Size(56, 17);
labelStopColor.TabIndex = 10;
labelStopColor.Text = "停止颜色";
//
// buttonReset
//
buttonReset.Location = new Point(8, 665);
buttonReset.Name = "buttonReset";
buttonReset.Size = new Size(75, 23);
buttonReset.TabIndex = 3;
buttonReset.Text = "重置";
buttonReset.UseVisualStyleBackColor = true;
buttonReset.Click += ButtonReset_Click;
//
// buttonSave
//
buttonSave.Location = new Point(222, 665);
buttonSave.Name = "buttonSave";
buttonSave.Size = new Size(75, 23);
buttonSave.TabIndex = 2;
buttonSave.Text = "保存";
buttonSave.UseVisualStyleBackColor = true;
buttonSave.Click += buttonSave_Click;
//
// Display
//
Display.Controls.Add(numericUpDownStripeSpacing);
Display.Controls.Add(label4);
Display.Controls.Add(label2);
Display.Controls.Add(checkBoxSmoothStripe);
Display.Controls.Add(checkBoxBottomEdge);
Display.Controls.Add(checkBoxRotundity);
Display.Controls.Add(checkBoxFrame);
Display.Controls.Add(checkBoxWavyLine);
Display.Controls.Add(labelBottomEdge);
Display.Controls.Add(labelRotundity);
Display.Controls.Add(labelFrame);
Display.Controls.Add(labelWaveLineDisplay);
Display.Location = new Point(8, 409);
Display.Name = "Display";
Display.Size = new Size(289, 122);
Display.TabIndex = 1;
Display.TabStop = false;
Display.Text = "显示内容";
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(163, 97);
label2.Name = "label2";
label2.Size = new Size(56, 17);
label2.TabIndex = 15;
label2.Text = "平滑圆角";
//
// checkBoxSmoothStripe
//
checkBoxSmoothStripe.AutoSize = true;
checkBoxSmoothStripe.Location = new Point(255, 98);
checkBoxSmoothStripe.Name = "checkBoxSmoothStripe";
checkBoxSmoothStripe.Size = new Size(15, 14);
checkBoxSmoothStripe.TabIndex = 14;
checkBoxSmoothStripe.UseVisualStyleBackColor = true;
//
// checkBoxBottomEdge
//
checkBoxBottomEdge.AutoSize = true;
checkBoxBottomEdge.Location = new Point(130, 98);
checkBoxBottomEdge.Name = "checkBoxBottomEdge";
checkBoxBottomEdge.Size = new Size(15, 14);
checkBoxBottomEdge.TabIndex = 13;
checkBoxBottomEdge.UseVisualStyleBackColor = true;
//
// checkBoxRotundity
//
checkBoxRotundity.AutoSize = true;
checkBoxRotundity.Location = new Point(130, 72);
checkBoxRotundity.Name = "checkBoxRotundity";
checkBoxRotundity.Size = new Size(15, 14);
checkBoxRotundity.TabIndex = 12;
checkBoxRotundity.UseVisualStyleBackColor = true;
//
// checkBoxFrame
//
checkBoxFrame.AutoSize = true;
checkBoxFrame.Location = new Point(130, 46);
checkBoxFrame.Name = "checkBoxFrame";
checkBoxFrame.Size = new Size(15, 14);
checkBoxFrame.TabIndex = 11;
checkBoxFrame.UseVisualStyleBackColor = true;
//
// checkBoxWavyLine
//
checkBoxWavyLine.AutoSize = true;
checkBoxWavyLine.Location = new Point(130, 20);
checkBoxWavyLine.Name = "checkBoxWavyLine";
checkBoxWavyLine.Size = new Size(15, 14);
checkBoxWavyLine.TabIndex = 10;
checkBoxWavyLine.UseVisualStyleBackColor = true;
//
// labelBottomEdge
//
labelBottomEdge.AutoSize = true;
labelBottomEdge.Location = new Point(16, 97);
labelBottomEdge.Name = "labelBottomEdge";
labelBottomEdge.Size = new Size(80, 17);
labelBottomEdge.TabIndex = 5;
labelBottomEdge.Text = "是否显示底边";
//
// labelRotundity
//
labelRotundity.AutoSize = true;
labelRotundity.Location = new Point(16, 71);
labelRotundity.Name = "labelRotundity";
labelRotundity.Size = new Size(80, 17);
labelRotundity.TabIndex = 4;
labelRotundity.Text = "是否显示圆形";
//
// labelFrame
//
labelFrame.AutoSize = true;
labelFrame.Location = new Point(16, 45);
labelFrame.Name = "labelFrame";
labelFrame.Size = new Size(80, 17);
labelFrame.TabIndex = 3;
labelFrame.Text = "是否显示边框";
//
// labelWaveLineDisplay
//
labelWaveLineDisplay.AutoSize = true;
labelWaveLineDisplay.Location = new Point(16, 19);
labelWaveLineDisplay.Name = "labelWaveLineDisplay";
labelWaveLineDisplay.Size = new Size(80, 17);
labelWaveLineDisplay.TabIndex = 2;
labelWaveLineDisplay.Text = "是否显示频谱";
//
// Effect
//
Effect.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
Effect.Controls.Add(labelWindowFuncText);
Effect.Controls.Add(selectWindowFunc);
Effect.Controls.Add(numericUpDownFourierVariation);
Effect.Controls.Add(labelFourierVariation);
Effect.Controls.Add(numericUpDownSpectralShift);
Effect.Controls.Add(numericUpDownRhythmicMagnification);
Effect.Controls.Add(labelSpectralShift);
Effect.Controls.Add(labelRhythmicMagnification);
Effect.Location = new Point(8, 6);
Effect.Name = "Effect";
Effect.Size = new Size(289, 135);
Effect.TabIndex = 0;
Effect.TabStop = false;
Effect.Text = "基础参数";
//
// labelWindowFuncText
//
labelWindowFuncText.AutoSize = true;
labelWindowFuncText.Location = new Point(13, 106);
labelWindowFuncText.Name = "labelWindowFuncText";
labelWindowFuncText.Size = new Size(80, 17);
labelWindowFuncText.TabIndex = 8;
labelWindowFuncText.Text = "选择窗口函数";
//
// selectWindowFunc
//
selectWindowFunc.DisplayMember = "0";
selectWindowFunc.FormattingEnabled = true;
selectWindowFunc.Location = new Point(99, 103);
selectWindowFunc.Name = "selectWindowFunc";
selectWindowFunc.Size = new Size(120, 25);
selectWindowFunc.TabIndex = 7;
selectWindowFunc.ValueMember = "0";
//
// numericUpDownFourierVariation
//
numericUpDownFourierVariation.Location = new Point(99, 74);
numericUpDownFourierVariation.Maximum = new decimal(new int[] { 999999999, 0, 0, 0 });
numericUpDownFourierVariation.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
numericUpDownFourierVariation.Name = "numericUpDownFourierVariation";
numericUpDownFourierVariation.Size = new Size(120, 23);
numericUpDownFourierVariation.TabIndex = 5;
numericUpDownFourierVariation.Value = new decimal(new int[] { 1, 0, 0, 0 });
//
// labelFourierVariation
//
labelFourierVariation.AutoSize = true;
labelFourierVariation.Location = new Point(16, 75);
labelFourierVariation.Name = "labelFourierVariation";
labelFourierVariation.Size = new Size(80, 17);
labelFourierVariation.TabIndex = 4;
labelFourierVariation.Text = "傅里叶变化量";
//
// numericUpDownSpectralShift
//
numericUpDownSpectralShift.DecimalPlaces = 2;
numericUpDownSpectralShift.Increment = new decimal(new int[] { 1, 0, 0, 131072 });
numericUpDownSpectralShift.Location = new Point(99, 45);
numericUpDownSpectralShift.Maximum = new decimal(new int[] { 1, 0, 0, 0 });
numericUpDownSpectralShift.Minimum = new decimal(new int[] { 2, 0, 0, -2147418112 });
numericUpDownSpectralShift.Name = "numericUpDownSpectralShift";
numericUpDownSpectralShift.Size = new Size(120, 23);
numericUpDownSpectralShift.TabIndex = 3;
//
// numericUpDownRhythmicMagnification
//
numericUpDownRhythmicMagnification.DecimalPlaces = 1;
numericUpDownRhythmicMagnification.Increment = new decimal(new int[] { 1, 0, 0, 65536 });
numericUpDownRhythmicMagnification.Location = new Point(99, 16);
numericUpDownRhythmicMagnification.Maximum = new decimal(new int[] { 9999, 0, 0, 0 });
numericUpDownRhythmicMagnification.Minimum = new decimal(new int[] { 9999, 0, 0, int.MinValue });
numericUpDownRhythmicMagnification.Name = "numericUpDownRhythmicMagnification";
numericUpDownRhythmicMagnification.Size = new Size(120, 23);
numericUpDownRhythmicMagnification.TabIndex = 2;
//
// labelSpectralShift
//
labelSpectralShift.AutoSize = true;
labelSpectralShift.Location = new Point(16, 47);
labelSpectralShift.Name = "labelSpectralShift";
labelSpectralShift.Size = new Size(56, 17);
labelSpectralShift.TabIndex = 1;
labelSpectralShift.Text = "频谱偏移";
//
// labelRhythmicMagnification
//
labelRhythmicMagnification.AutoSize = true;
labelRhythmicMagnification.Location = new Point(16, 19);
labelRhythmicMagnification.Name = "labelRhythmicMagnification";
labelRhythmicMagnification.Size = new Size(56, 17);
labelRhythmicMagnification.TabIndex = 0;
labelRhythmicMagnification.Text = "律动倍率";
//
// Other
//
Other.Controls.Add(ThirdParty);
Other.Controls.Add(OtherResetBtn);
Other.Controls.Add(OtherSaveBtn);
Other.Location = new Point(4, 26);
Other.Name = "Other";
Other.Padding = new Padding(3);
Other.Size = new Size(305, 692);
Other.TabIndex = 1;
Other.Text = "其他";
Other.UseVisualStyleBackColor = true;
//
// ThirdParty
//
ThirdParty.Controls.Add(CheckBoxAutoStop);
ThirdParty.Controls.Add(OtherDisplayName);
ThirdParty.Controls.Add(LabelAutoStop);
ThirdParty.Controls.Add(label3);
ThirdParty.Controls.Add(panelEx1);
ThirdParty.Controls.Add(VideoRateLabel);
ThirdParty.Controls.Add(trackBarVideoVolume);
ThirdParty.Controls.Add(VideoVolumeLabel);
ThirdParty.Controls.Add(trackBarVideoRate);
ThirdParty.Controls.Add(videoView1);
ThirdParty.Controls.Add(UseOtherWallpaper);
ThirdParty.Controls.Add(label1);
ThirdParty.Location = new Point(8, 6);
ThirdParty.Name = "ThirdParty";
ThirdParty.Size = new Size(289, 289);
ThirdParty.TabIndex = 6;
ThirdParty.TabStop = false;
ThirdParty.Text = "第三方壁纸";
//
// CheckBoxAutoStop
//
CheckBoxAutoStop.AutoSize = true;
CheckBoxAutoStop.Location = new Point(193, 246);
CheckBoxAutoStop.Name = "CheckBoxAutoStop";
CheckBoxAutoStop.Size = new Size(15, 14);
CheckBoxAutoStop.TabIndex = 18;
CheckBoxAutoStop.UseVisualStyleBackColor = true;
//
// OtherDisplayName
//
OtherDisplayName.AutoSize = true;
OtherDisplayName.Location = new Point(140, 219);
OtherDisplayName.Name = "OtherDisplayName";
OtherDisplayName.Size = new Size(68, 17);
OtherDisplayName.TabIndex = 24;
OtherDisplayName.Text = "没有初始化";
//
// LabelAutoStop
//
LabelAutoStop.AutoSize = true;
LabelAutoStop.Location = new Point(16, 245);
LabelAutoStop.Name = "LabelAutoStop";
LabelAutoStop.Size = new Size(140, 17);
LabelAutoStop.TabIndex = 0;
LabelAutoStop.Text = "其它应用全屏时暂停壁纸";
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(16, 219);
label3.Name = "label3";
label3.Size = new Size(80, 17);
label3.TabIndex = 23;
label3.Text = "显示器注册名";
//
// panelEx1
//
panelEx1.BackColor = Color.Transparent;
panelEx1.BorderThickness = 1F;
panelEx1.Cursor = Cursors.Hand;
panelEx1.Location = new Point(16, 40);
panelEx1.Name = "panelEx1";
panelEx1.Opacity = 0.5F;
panelEx1.RotateAngle = 0F;
panelEx1.Size = new Size(192, 108);
panelEx1.TabIndex = 22;
panelEx1.Click += videoView1_Click;
//
// VideoRateLabel
//
VideoRateLabel.AutoSize = true;
VideoRateLabel.Location = new Point(229, 182);
VideoRateLabel.Name = "VideoRateLabel";
VideoRateLabel.Size = new Size(15, 17);
VideoRateLabel.TabIndex = 21;
VideoRateLabel.Text = "1";
//
// trackBarVideoVolume
//
trackBarVideoVolume.Location = new Point(223, 40);
trackBarVideoVolume.Maximum = 100;
trackBarVideoVolume.Name = "trackBarVideoVolume";
trackBarVideoVolume.Orientation = Orientation.Vertical;
trackBarVideoVolume.Size = new Size(45, 104);
trackBarVideoVolume.TabIndex = 7;
trackBarVideoVolume.Value = 100;
trackBarVideoVolume.Scroll += trackBarVideoVolume_Scroll;
//
// VideoVolumeLabel
//
VideoVolumeLabel.AutoSize = true;
VideoVolumeLabel.Location = new Point(229, 154);
VideoVolumeLabel.Name = "VideoVolumeLabel";
VideoVolumeLabel.Size = new Size(29, 17);
VideoVolumeLabel.TabIndex = 20;
VideoVolumeLabel.Text = "100";
//
// trackBarVideoRate
//
trackBarVideoRate.Location = new Point(16, 154);
trackBarVideoRate.Maximum = 100;
trackBarVideoRate.Minimum = 5;
trackBarVideoRate.Name = "trackBarVideoRate";
trackBarVideoRate.Size = new Size(192, 45);
trackBarVideoRate.TabIndex = 19;
trackBarVideoRate.TickStyle = TickStyle.TopLeft;
trackBarVideoRate.Value = 10;
trackBarVideoRate.Scroll += trackBarVideoRate_Scroll;
//
// videoView1
//
videoView1.BackColor = Color.Black;
videoView1.Cursor = Cursors.Hand;
videoView1.Location = new Point(16, 40);
videoView1.MediaPlayer = null;
videoView1.Name = "videoView1";
videoView1.Size = new Size(192, 108);
videoView1.TabIndex = 18;
videoView1.Text = "videoView1";
//
// UseOtherWallpaper
//
UseOtherWallpaper.AutoSize = true;
UseOtherWallpaper.Location = new Point(193, 21);
UseOtherWallpaper.Name = "UseOtherWallpaper";
UseOtherWallpaper.Size = new Size(15, 14);
UseOtherWallpaper.TabIndex = 17;
UseOtherWallpaper.UseVisualStyleBackColor = true;
UseOtherWallpaper.CheckedChanged += UseOtherWallpaper_CheckedChanged;
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(16, 19);
label1.Name = "label1";
label1.Size = new Size(92, 17);
label1.TabIndex = 5;
label1.Text = "启用第三方壁纸";
//
// OtherResetBtn
//
OtherResetBtn.Location = new Point(8, 665);
OtherResetBtn.Name = "OtherResetBtn";
OtherResetBtn.Size = new Size(75, 23);
OtherResetBtn.TabIndex = 5;
OtherResetBtn.Text = "重置";
OtherResetBtn.UseVisualStyleBackColor = true;
OtherResetBtn.Click += OtherResetBtn_Click;
//
// OtherSaveBtn
//
OtherSaveBtn.Location = new Point(222, 665);
OtherSaveBtn.Name = "OtherSaveBtn";
OtherSaveBtn.Size = new Size(75, 23);
OtherSaveBtn.TabIndex = 4;
OtherSaveBtn.Text = "保存";
OtherSaveBtn.UseVisualStyleBackColor = true;
OtherSaveBtn.Click += OtherSaveBtn_Click;
//
// label4
//
label4.AutoSize = true;
label4.Location = new Point(163, 71);
label4.Name = "label4";
label4.Size = new Size(56, 17);
label4.TabIndex = 16;
label4.Text = "条纹间隔";
//
// numericUpDownStripeSpacing
//
numericUpDownStripeSpacing.Location = new Point(225, 68);
numericUpDownStripeSpacing.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownStripeSpacing.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
numericUpDownStripeSpacing.Name = "numericUpDownStripeSpacing";
numericUpDownStripeSpacing.Size = new Size(45, 23);
numericUpDownStripeSpacing.TabIndex = 9;
numericUpDownStripeSpacing.Value = new decimal(new int[] { 1, 0, 0, 0 });
//
// SetFrom
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(313, 722);
Controls.Add(tabControl);
FormBorderStyle = FormBorderStyle.FixedSingle;
Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false;
Name = "SetFrom";
Text = "设置";
FormClosed += SetFrom_FormClosed;
Load += SetForm_Load;
LocationChanged += SetFrom_LocationChanged;
tabControl.ResumeLayout(false);
Routine.ResumeLayout(false);
MultiMonitorCompatibility.ResumeLayout(false);
MultiMonitorCompatibility.PerformLayout();
groupBoxColor.ResumeLayout(false);
groupBoxColor.PerformLayout();
((System.ComponentModel.ISupportInitialize)BackgroundImage).EndInit();
((System.ComponentModel.ISupportInitialize)BackgroundColor).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownNumberOfColors).EndInit();
((System.ComponentModel.ISupportInitialize)StartColor).EndInit();
((System.ComponentModel.ISupportInitialize)StopColor).EndInit();
Display.ResumeLayout(false);
Display.PerformLayout();
Effect.ResumeLayout(false);
Effect.PerformLayout();
((System.ComponentModel.ISupportInitialize)numericUpDownFourierVariation).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownSpectralShift).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownRhythmicMagnification).EndInit();
Other.ResumeLayout(false);
ThirdParty.ResumeLayout(false);
ThirdParty.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackBarVideoVolume).EndInit();
((System.ComponentModel.ISupportInitialize)trackBarVideoRate).EndInit();
((System.ComponentModel.ISupportInitialize)videoView1).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownStripeSpacing).EndInit();
ResumeLayout(false);
}
#endregion
private TabControl tabControl;
private TabPage Routine;
private TabPage Other;
private GroupBox Effect;
private Label labelRhythmicMagnification;
private Label labelSpectralShift;
private GroupBox Display;
private Label labelBottomEdge;
private Label labelRotundity;
private Label labelFrame;
private Label labelWaveLineDisplay;
private NumericUpDown numericUpDownSpectralShift;
private NumericUpDown numericUpDownRhythmicMagnification;
private Button buttonReset;
private Button buttonSave;
private CheckBox checkBoxBottomEdge;
private CheckBox checkBoxRotundity;
private CheckBox checkBoxFrame;
private CheckBox checkBoxWavyLine;
private NumericUpDown numericUpDownFourierVariation;
private Label labelFourierVariation;
private PictureBox StartColor;
private Label labelStopColor;
private Label labelStartColor;
private PictureBox StopColor;
private Label labelMonochrome;
private CheckBox checkBoxMonochrome;
private Label labelNumberOfColors;
private NumericUpDown numericUpDownNumberOfColors;
private GroupBox groupBoxColor;
private CheckBox checkBoxUseDefault;
private Label labelUseSystemColor;
private Label labelBackgroundCOlor;
private PictureBox BackgroundColor;
private Label labelBackgroundImg;
private PictureBox BackgroundImage;
private Label labelBackImgOrBackColor;
private CheckBox checkBoxImgOrColor;
private GroupBox MultiMonitorCompatibility;
private Label DisplayRegistrationName;
private Label DisplayName;
private CheckBox checkBoxIsShow;
private Label IsTheMonitorEnabled;
private Label LabelUsingUnifiedConfiguration;
private CheckBox checkBoxUsingUnifiedConfiguration;
private CheckBox RoutineCheckBoxAutoStop;
private Label LableRoutineAutoStop;
private Button OtherResetBtn;
private Button OtherSaveBtn;
private GroupBox ThirdParty;
private CheckBox UseOtherWallpaper;
private Label label1;
private LibVLCSharp.WinForms.VideoView videoView1;
private Label VideoRateLabel;
private TrackBar trackBarVideoVolume;
private Label VideoVolumeLabel;
private TrackBar trackBarVideoRate;
private PanelEx panelEx1;
private Label OtherDisplayName;
private Label label3;
private CheckBox CheckBoxAutoStop;
private Label LabelAutoStop;
private Label labelWindowFuncText;
private ComboBox selectWindowFunc;
private Label label2;
private CheckBox checkBoxSmoothStripe;
private NumericUpDown numericUpDownStripeSpacing;
private Label label4;
}
}

File diff suppressed because it is too large Load Diff

397
AudioVisualizer/SetForm.cs Normal file
View File

@@ -0,0 +1,397 @@
using AudioWallpaper.Entity;
using LibVLCSharp.Shared;
using System.Runtime.CompilerServices;
namespace AudioWallpaper {
public partial class SetFrom : Form {
public static String ConfigFilePath = Application.StartupPath + "\\config.ini";
public String? BackImagePath = null;
public String? OtherVideoPath = null;
private static SetFrom? setFrom = null;
private Screen NowWindowOnScrenn;
private System.Timers.Timer debounceTimer;
private const double DEBOUNCE_TIME = 150;
public static int FullScreenWindowCount = 0;
private LibVLC? libVLC = new LibVLC();
private MediaPlayer? mediaPlayer;
private Media? media;
private String[] windowFunc = new String[] { "RECTANGULAR", "HANNING", "HAMMING", "BLACKMAN", "BARTLETT" };
private SetFrom() {
debounceTimer = new System.Timers.Timer(DEBOUNCE_TIME);
debounceTimer.Elapsed += DebounceTimer_Tick;
debounceTimer.AutoReset = false;
}
public delegate void ReLoadConfig(ConfigurationObject configurationObject);
public event ReLoadConfig ReloadConfig;
public static SetFrom ShowSetFrom() {
if (setFrom == null) {
setFrom = new SetFrom();
setFrom.InitializeComponent();
setFrom.selectWindowFunc.Items.Clear();
foreach (string item in setFrom.windowFunc) {
setFrom.selectWindowFunc.Items.Add(item);
}
}
return setFrom;
}
private void buttonSave_Click(object sender, EventArgs e) {
SavaConfig();
}
private void SavaConfig() {
//创建配置对象
GeneralConfigurationObjects generalConfigurationObjects = new GeneralConfigurationObjects {
//为配置对象添加内容
DefaultRadical = (float)numericUpDownRhythmicMagnification.Value,
DefaultOffset = (float)numericUpDownSpectralShift.Value,
DefaultFourierVariation = (int)numericUpDownFourierVariation.Value,
ApplyWindowFunc = selectWindowFunc.SelectedItem != null ? selectWindowFunc.SelectedItem.ToString() : "",
DefaultColor = StartColor.BackColor,
DefaultStopColor = StopColor.BackColor,
UseDefaultColorOrNOt = checkBoxUseDefault.Checked,
NumberOfColors = (int)numericUpDownNumberOfColors.Value,
MonochromeOrNot = checkBoxMonochrome.Checked,
BackgroundColor = BackgroundColor.BackColor,
BackImgOrNot = checkBoxImgOrColor.Checked,
BackgroundImagePath = BackImagePath,
WavyLine = checkBoxWavyLine.Checked,
Frame = checkBoxFrame.Checked,
Rotundity = checkBoxRotundity.Checked,
Stripe = checkBoxBottomEdge.Checked,
SmoothStripe = checkBoxSmoothStripe.Checked,
StripeSpacing = (uint)numericUpDownStripeSpacing.Value,
SettingForScreenName = DisplayName.Text,
IsShow = checkBoxIsShow.Checked,
IsUsingUnifiedConfiguration = checkBoxUsingUnifiedConfiguration.Checked,
AutoStopWallPaper = RoutineCheckBoxAutoStop.Checked
};
//保存设置
generalConfigurationObjects.SaveConfig(ConfigFilePath);
//创建其他配置对象
VideoWallpaperConfigObject videoWallpaperConfigObject = new VideoWallpaperConfigObject {
Rate = trackBarVideoRate.Value,
Volume = trackBarVideoVolume.Value,
Url = OtherVideoPath,
SettingForScreenName = OtherDisplayName.Text,
IsShow = UseOtherWallpaper.Checked,
AutoStopWallPaper = CheckBoxAutoStop.Checked
};
videoWallpaperConfigObject.SaveConfig(ConfigFilePath);
ConfigurationObject configurationObject = new ConfigurationObject() {
GeneralConfigurationObjects = generalConfigurationObjects,
VideoWallpaperConfigObject = videoWallpaperConfigObject
};
if (ReloadConfig != null) {
ReloadConfig(configurationObject);
}
}
/// <summary>
/// 设置窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SetForm_Load(object sender, EventArgs e) {
//appBarManager.RegisterCallbackMessage();
//appBarManage
ShowSetData();
ControlStatusUpdates();
}
public void ShowSetData() {
//获取当前显示器
NowWindowOnScrenn = GetThisWindowOnScreen();
DisplayName.Text = NowWindowOnScrenn.DeviceName;
OtherDisplayName.Text = NowWindowOnScrenn.DeviceName;
//创建配置对象
ConfigurationObject configurationObject = new ConfigurationObject();
GeneralConfigurationObjects generalConfigurationObjects = configurationObject.GeneralConfigurationObjects.LoadConfiguration(ConfigFilePath, NowWindowOnScrenn.DeviceName);
VideoWallpaperConfigObject videoWallpaperConfig = configurationObject.VideoWallpaperConfigObject.LoadConfig(ConfigFilePath, NowWindowOnScrenn.DeviceName);
numericUpDownRhythmicMagnification.Value = (decimal)generalConfigurationObjects.DefaultRadical;
numericUpDownSpectralShift.Value = (decimal)generalConfigurationObjects.DefaultOffset;
numericUpDownFourierVariation.Value = generalConfigurationObjects.DefaultFourierVariation;
selectWindowFunc.SelectedIndex = Array.IndexOf(windowFunc, generalConfigurationObjects.ApplyWindowFunc) >= 0 ? Array.IndexOf(windowFunc, generalConfigurationObjects.ApplyWindowFunc) : 0;
StartColor.BackColor = generalConfigurationObjects.DefaultColor;
StopColor.BackColor = generalConfigurationObjects.DefaultStopColor;
checkBoxUseDefault.Checked = generalConfigurationObjects.UseDefaultColorOrNOt;
numericUpDownNumberOfColors.Value = generalConfigurationObjects.NumberOfColors;
checkBoxMonochrome.Checked = generalConfigurationObjects.MonochromeOrNot;
BackgroundColor.BackColor = generalConfigurationObjects.BackgroundColor;
checkBoxImgOrColor.Checked = generalConfigurationObjects.BackImgOrNot;
BackImagePath = generalConfigurationObjects.BackgroundImagePath;
if (generalConfigurationObjects.BackgroundImagePath != null) {
BackgroundImage.Image = Image.FromFile(generalConfigurationObjects.BackgroundImagePath);
} else {
BackgroundImage.Image = null;
}
checkBoxWavyLine.Checked = generalConfigurationObjects.WavyLine;
checkBoxFrame.Checked = generalConfigurationObjects.Frame;
checkBoxRotundity.Checked = generalConfigurationObjects.Rotundity;
checkBoxBottomEdge.Checked = generalConfigurationObjects.Stripe;
checkBoxSmoothStripe.Checked = generalConfigurationObjects.SmoothStripe;
numericUpDownStripeSpacing.Value = generalConfigurationObjects.StripeSpacing;
checkBoxIsShow.Checked = generalConfigurationObjects.IsShow;
checkBoxUsingUnifiedConfiguration.Checked = generalConfigurationObjects.IsUsingUnifiedConfiguration;
RoutineCheckBoxAutoStop.Checked = generalConfigurationObjects.AutoStopWallPaper;
UseOtherWallpaper.Checked = videoWallpaperConfig.IsShow;
OtherVideoPath = videoWallpaperConfig.Url;
trackBarVideoRate.Value = videoWallpaperConfig.Rate;
trackBarVideoVolume.Value = videoWallpaperConfig.Volume;
VideoRateLabel.Text = ((float)videoWallpaperConfig.Rate / 10f).ToString();
VideoVolumeLabel.Text = videoWallpaperConfig.Volume.ToString();
CheckBoxAutoStop.Checked = videoWallpaperConfig.AutoStopWallPaper;
videoViewPlayer(OtherVideoPath);
}
private void ButtonReset_Click(object sender, EventArgs e) {
GeneralConfigurationObjects generalConfigurationObjects = new GeneralConfigurationObjects();
generalConfigurationObjects.SettingForScreenName = NowWindowOnScrenn.DeviceName;
generalConfigurationObjects.SaveConfig(ConfigFilePath);
ShowSetData();
}
private void checkBoxMonochrome_CheckedChanged(object sender, EventArgs e) {
ControlStatusUpdates();
}
private void StartColor_Click(object sender, EventArgs e) {
//创建颜色选择器
ColorDialog startColorDialog = new ColorDialog();
if (startColorDialog.ShowDialog() == DialogResult.OK) {
StartColor.BackColor = startColorDialog.Color;
}
}
private void StopColor_Click(object sender, EventArgs e) {
ColorDialog stopColorDialog = new ColorDialog();
if (stopColorDialog.ShowDialog() == DialogResult.OK) {
StopColor.BackColor = stopColorDialog.Color;
}
}
private void BackgroundColor_Click(object sender, EventArgs e) {
ColorDialog backgroundColorDialog = new ColorDialog();
if (backgroundColorDialog.ShowDialog() == DialogResult.OK) {
BackgroundColor.BackColor = backgroundColorDialog.Color;
}
}
/// <summary>
/// 是否使用系统默认颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void checkBoxUseDefault_CheckedChanged(object sender, EventArgs e) {
StartColor.Enabled = !checkBoxUseDefault.Checked;
StopColor.Enabled = !checkBoxUseDefault.Checked;
if (checkBoxUseDefault.Checked && checkBoxMonochrome.Checked) {
checkBoxMonochrome.Checked = false;
}
numericUpDownNumberOfColors.Enabled = !checkBoxUseDefault.Checked;
}
private void ImgOrColor_CheckedChanged(object sender, EventArgs e) {
//选中时,背景颜色选项将不能被点击
BackgroundColor.Enabled = !checkBoxImgOrColor.Checked;
BackgroundImage.Enabled = checkBoxImgOrColor.Checked;
}
private void BackgroundImage_Click(object sender, EventArgs e) {
//创建文件选择框,并显示,选择文件
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "图片文件(*.png;*.jpg;*.jpeg)|*.png;*.jpg;*.jpeg";
dialog.Title = "请选择一张图片作为背景";
if (dialog.ShowDialog() == DialogResult.OK) {
BackImagePath = dialog.FileName;
BackgroundImage.Image = Image.FromFile(dialog.FileName);
}
}
private void SetFrom_FormClosed(object sender, FormClosedEventArgs e) {
DisposeVideo();
Visible = false;
}
/// <summary>
/// 获取当期窗体所在屏幕
/// </summary>
private Screen GetThisWindowOnScreen() {
return Screen.FromControl(this);
}
private void SetFrom_LocationChanged(object sender, EventArgs e) {
//防抖调用showsetdata函数
debounceTimer.Stop();
debounceTimer.Start();
}
/// <summary>
/// 防抖
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DebounceTimer_Tick(object sender, EventArgs e) {
this.Invoke(new Action(() => {
if (GetThisWindowOnScreen().GetHashCode() != NowWindowOnScrenn.GetHashCode()) {
ShowSetData();
}
ControlStatusUpdates();
}));
}
private void checkBoxUsingUnifiedConfiguration_CheckedChanged(object sender, EventArgs e) {
if (checkBoxUsingUnifiedConfiguration.Checked) {
}
}
private void checkBoxIsShow_CheckedChanged(object sender, EventArgs e) {
ControlStatusUpdates();
if (checkBoxIsShow.Checked && UseOtherWallpaper.Checked) {
UseOtherWallpaper.Checked = false;
}
}
/// <summary>
/// 统一更新控件状态
/// </summary>
private void ControlStatusUpdates() {
bool IsShow = checkBoxIsShow.Checked;
Display.Enabled = IsShow;
groupBoxColor.Enabled = IsShow;
Effect.Enabled = IsShow;
checkBoxUsingUnifiedConfiguration.Enabled = IsShow;
//是否单色 如果选中,禁用停止颜色选项卡
StopColor.Cursor = checkBoxMonochrome.Checked ? Cursors.No : Cursors.Hand;
StopColor.Enabled = !checkBoxMonochrome.Checked;
if (checkBoxMonochrome.Checked && checkBoxUseDefault.Checked) {
checkBoxUseDefault.Checked = false;
}
numericUpDownNumberOfColors.Enabled = !checkBoxMonochrome.Checked;
}
/// <summary>
/// 是否使用第三方壁纸
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void UseOtherWallpaper_CheckedChanged(object sender, EventArgs e) {
if (UseOtherWallpaper.Checked && checkBoxIsShow.Checked) {
checkBoxIsShow.Checked = false;
}
}
/// <summary>
/// 视频
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void videoView1_Click(object sender, EventArgs e) {
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "视频(*.MP4;*.AVI;*.MKV;*.MOV;*.WMV)|*.MP4;*.AVI;*.MKV;*.MOV;*.WMV";
dialog.Title = "请选择一个视频文件作为壁纸";
if (dialog.ShowDialog() == DialogResult.OK) {
OtherVideoPath = dialog.FileName;
videoViewPlayer(OtherVideoPath);
}
}
/// <summary>
/// 音量滑动条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trackBarVideoVolume_Scroll(object sender, EventArgs e) {
VideoVolumeLabel.Text = trackBarVideoVolume.Value.ToString();
if (mediaPlayer != null) {
mediaPlayer.Volume = trackBarVideoVolume.Value;
}
}
/// <summary>
/// 速率滑动条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trackBarVideoRate_Scroll(object sender, EventArgs e) {
VideoRateLabel.Text = ((float)trackBarVideoRate.Value / 10f).ToString();
if (mediaPlayer != null) {
mediaPlayer.SetRate((float)trackBarVideoRate.Value / 10f);
}
}
private void videoViewPlayer(String? url) {
if (url == null) {
return;
}
if (libVLC == null) {
libVLC = new LibVLC();
}
Uri? uri = null;
try {
uri = new Uri(url);
} catch (Exception) {
return;
};
if (uri == null) {
return;
}
media = new Media(libVLC, uri);
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.TimeChanged += MediaPlayer_TimeChanged;
mediaPlayer.EndReached += MediaPlayer_EndReached;
}
videoView1.MediaPlayer = mediaPlayer;
System.GC.Collect();
mediaPlayer.SetRate((float)trackBarVideoRate.Value / 10f);
mediaPlayer.Mute = true;
mediaPlayer.Play(media);
}
private void MediaPlayer_TimeChanged(object? sender, MediaPlayerTimeChangedEventArgs e) {
if (e.Time >= 3000 && mediaPlayer != null && media != null) {
mediaPlayer.Position = 0;
}
}
private void MediaPlayer_EndReached(object? sender, EventArgs e) {
if (media != null && mediaPlayer != null) {
ThreadPool.QueueUserWorkItem((p) => mediaPlayer.Play(media));
}
}
private void DisposeVideo() {
if (mediaPlayer != null) {
mediaPlayer.TimeChanged -= MediaPlayer_TimeChanged;
mediaPlayer.EndReached -= MediaPlayer_EndReached;
mediaPlayer.Stop();
mediaPlayer.Dispose();
mediaPlayer = null;
}
if (media != null) {
media.Dispose();
media = null;
}
GC.Collect();
}
/// <summary>
/// 其他配置保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OtherSaveBtn_Click(object sender, EventArgs e) {
SavaConfig();
}
private void OtherResetBtn_Click(object sender, EventArgs e) {
VideoWallpaperConfigObject videoWallpaperConfigObject = new VideoWallpaperConfigObject();
videoWallpaperConfigObject.SettingForScreenName = NowWindowOnScrenn.DeviceName;
videoWallpaperConfigObject.SaveConfig(ConfigFilePath);
ShowSetData();
}
}
}

View File

@@ -0,0 +1,522 @@
<<<<<<< HEAD
using AudioWallpaper.Entity;
using LibVLCSharp.Shared;
using System.Runtime.CompilerServices;
namespace AudioWallpaper {
public partial class SetFrom : Form {
public static String ConfigFilePath = Application.StartupPath + "\\config.ini";
public String? BackImagePath = null;
public String? OtherVideoPath = null;
private static SetFrom? setFrom = null;
private Screen NowWindowOnScrenn;
private System.Timers.Timer debounceTimer;
private const double DEBOUNCE_TIME = 150;
public static int FullScreenWindowCount = 0;
private LibVLC? libVLC = new LibVLC();
private MediaPlayer? mediaPlayer;
private Media? media;
private String[] windowFunc = new String[] { "RECTANGULAR", "HANNING", "HAMMING", "BLACKMAN", "BARTLETT" };
private SetFrom() {
debounceTimer = new System.Timers.Timer(DEBOUNCE_TIME);
debounceTimer.Elapsed += DebounceTimer_Tick;
debounceTimer.AutoReset = false;
}
public delegate void ReLoadConfig(ConfigurationObject configurationObject);
public event ReLoadConfig ReloadConfig;
public static SetFrom ShowSetFrom() {
if (setFrom == null) {
setFrom = new SetFrom();
setFrom.InitializeComponent();
setFrom.selectWindowFunc.Items.Clear();
foreach (string item in setFrom.windowFunc) {
setFrom.selectWindowFunc.Items.Add(item);
}
}
return setFrom;
}
private void buttonSave_Click(object sender, EventArgs e) {
SavaConfig();
}
private void SavaConfig() {
//创建配置对象
GeneralConfigurationObjects generalConfigurationObjects = new GeneralConfigurationObjects {
=======
using LibAudioVisualizer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AudioVisualizer {
public partial class SetFrom : Form {
String ConfigFilePath = Application.StartupPath + "\\config.ini";
public MainWindow MainWindowData;
public String? BackImagePath = null;
private static SetFrom? setFrom = null;
private SetFrom() {
}
public static SetFrom ShowSetFrom(MainWindow mainWindow) {
if (setFrom == null) {
setFrom = new SetFrom();
}
setFrom.InitializeComponent();
setFrom.MainWindowData = mainWindow;
return setFrom;
}
private void buttonSave_Click(object sender, EventArgs e) {
//创建配置对象
ConfigurationObject configuration = new ConfigurationObject {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
//为配置对象添加内容
DefaultRadical = (float)numericUpDownRhythmicMagnification.Value,
DefaultOffset = (float)numericUpDownSpectralShift.Value,
DefaultFourierVariation = (int)numericUpDownFourierVariation.Value,
<<<<<<< HEAD
ApplyWindowFunc = selectWindowFunc.SelectedItem != null ? selectWindowFunc.SelectedItem.ToString() : "",
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
DefaultColor = StartColor.BackColor,
DefaultStopColor = StopColor.BackColor,
UseDefaultColorOrNOt = checkBoxUseDefault.Checked,
NumberOfColors = (int)numericUpDownNumberOfColors.Value,
MonochromeOrNot = checkBoxMonochrome.Checked,
BackgroundColor = BackgroundColor.BackColor,
BackImgOrNot = checkBoxImgOrColor.Checked,
BackgroundImagePath = BackImagePath,
WavyLine = checkBoxWavyLine.Checked,
Frame = checkBoxFrame.Checked,
Rotundity = checkBoxRotundity.Checked,
<<<<<<< HEAD
Stripe = checkBoxBottomEdge.Checked,
SmoothStripe = checkBoxSmoothStripe.Checked,
StripeSpacing = (uint)numericUpDownStripeSpacing.Value,
SettingForScreenName = DisplayName.Text,
IsShow = checkBoxIsShow.Checked,
IsUsingUnifiedConfiguration = checkBoxUsingUnifiedConfiguration.Checked,
AutoStopWallPaper = RoutineCheckBoxAutoStop.Checked
};
//保存设置
generalConfigurationObjects.SaveConfig(ConfigFilePath);
//创建其他配置对象
VideoWallpaperConfigObject videoWallpaperConfigObject = new VideoWallpaperConfigObject {
Rate = trackBarVideoRate.Value,
Volume = trackBarVideoVolume.Value,
Url = OtherVideoPath,
SettingForScreenName = OtherDisplayName.Text,
IsShow = UseOtherWallpaper.Checked,
AutoStopWallPaper = CheckBoxAutoStop.Checked
};
videoWallpaperConfigObject.SaveConfig(ConfigFilePath);
ConfigurationObject configurationObject = new ConfigurationObject() {
GeneralConfigurationObjects = generalConfigurationObjects,
VideoWallpaperConfigObject = videoWallpaperConfigObject
};
if (ReloadConfig != null) {
ReloadConfig(configurationObject);
}
=======
Stripe = checkBoxBottomEdge.Checked
};
//保存设置
configuration.SaveConfiguration(ConfigFilePath);
ReloadSet(configuration);
}
public void ReloadSet(ConfigurationObject configuration) {
MainWindow.configurationObject = configuration;
//重新生成颜色数组
MainWindow.allColors = MainWindow.GetAllHsvColors(configuration.NumberOfColors);
//MainWindowData.BackColor = Color.Red;
if (configuration.BackImgOrNot && configuration.BackgroundImagePath != null) {
//MainWindowData.BackColor = Color.Transparent;
//MainWindowData.BackgroundImage = Image.FromFile(configuration.BackgroundImagePath);
int iActulaWidth = Screen.PrimaryScreen.Bounds.Width;
int iActulaHeight = Screen.PrimaryScreen.Bounds.Height;
MainWindowData.backgroundImage = new Bitmap(iActulaWidth, iActulaHeight);
using (var graphics = Graphics.FromImage(MainWindowData.backgroundImage)) {
graphics.DrawImage(Image.FromFile(configuration.BackgroundImagePath), 0, 0, iActulaWidth, iActulaHeight);
}
} else {
MainWindowData.BackColor = configuration.BackgroundColor;
}
//修改傅里叶变化量
GC.Collect();
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
/// <summary>
/// 设置窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SetForm_Load(object sender, EventArgs e) {
<<<<<<< HEAD
//appBarManager.RegisterCallbackMessage();
//appBarManage
ShowSetData();
ControlStatusUpdates();
}
public void ShowSetData() {
//获取当前显示器
NowWindowOnScrenn = GetThisWindowOnScreen();
DisplayName.Text = NowWindowOnScrenn.DeviceName;
OtherDisplayName.Text = NowWindowOnScrenn.DeviceName;
//创建配置对象
ConfigurationObject configurationObject = new ConfigurationObject();
GeneralConfigurationObjects generalConfigurationObjects = configurationObject.GeneralConfigurationObjects.LoadConfiguration(ConfigFilePath, NowWindowOnScrenn.DeviceName);
VideoWallpaperConfigObject videoWallpaperConfig = configurationObject.VideoWallpaperConfigObject.LoadConfig(ConfigFilePath, NowWindowOnScrenn.DeviceName);
numericUpDownRhythmicMagnification.Value = (decimal)generalConfigurationObjects.DefaultRadical;
numericUpDownSpectralShift.Value = (decimal)generalConfigurationObjects.DefaultOffset;
numericUpDownFourierVariation.Value = generalConfigurationObjects.DefaultFourierVariation;
selectWindowFunc.SelectedIndex = Array.IndexOf(windowFunc, generalConfigurationObjects.ApplyWindowFunc) >= 0 ? Array.IndexOf(windowFunc, generalConfigurationObjects.ApplyWindowFunc) : 0;
StartColor.BackColor = generalConfigurationObjects.DefaultColor;
StopColor.BackColor = generalConfigurationObjects.DefaultStopColor;
checkBoxUseDefault.Checked = generalConfigurationObjects.UseDefaultColorOrNOt;
numericUpDownNumberOfColors.Value = generalConfigurationObjects.NumberOfColors;
checkBoxMonochrome.Checked = generalConfigurationObjects.MonochromeOrNot;
BackgroundColor.BackColor = generalConfigurationObjects.BackgroundColor;
checkBoxImgOrColor.Checked = generalConfigurationObjects.BackImgOrNot;
BackImagePath = generalConfigurationObjects.BackgroundImagePath;
if (generalConfigurationObjects.BackgroundImagePath != null) {
BackgroundImage.Image = Image.FromFile(generalConfigurationObjects.BackgroundImagePath);
} else {
BackgroundImage.Image = null;
}
checkBoxWavyLine.Checked = generalConfigurationObjects.WavyLine;
checkBoxFrame.Checked = generalConfigurationObjects.Frame;
checkBoxRotundity.Checked = generalConfigurationObjects.Rotundity;
checkBoxBottomEdge.Checked = generalConfigurationObjects.Stripe;
checkBoxSmoothStripe.Checked = generalConfigurationObjects.SmoothStripe;
numericUpDownStripeSpacing.Value = generalConfigurationObjects.StripeSpacing;
checkBoxIsShow.Checked = generalConfigurationObjects.IsShow;
checkBoxUsingUnifiedConfiguration.Checked = generalConfigurationObjects.IsUsingUnifiedConfiguration;
RoutineCheckBoxAutoStop.Checked = generalConfigurationObjects.AutoStopWallPaper;
UseOtherWallpaper.Checked = videoWallpaperConfig.IsShow;
OtherVideoPath = videoWallpaperConfig.Url;
trackBarVideoRate.Value = videoWallpaperConfig.Rate;
trackBarVideoVolume.Value = videoWallpaperConfig.Volume;
VideoRateLabel.Text = ((float)videoWallpaperConfig.Rate / 10f).ToString();
VideoVolumeLabel.Text = videoWallpaperConfig.Volume.ToString();
CheckBoxAutoStop.Checked = videoWallpaperConfig.AutoStopWallPaper;
videoViewPlayer(OtherVideoPath);
}
private void ButtonReset_Click(object sender, EventArgs e) {
GeneralConfigurationObjects generalConfigurationObjects = new GeneralConfigurationObjects();
generalConfigurationObjects.SettingForScreenName = NowWindowOnScrenn.DeviceName;
generalConfigurationObjects.SaveConfig(ConfigFilePath);
ShowSetData();
}
private void checkBoxMonochrome_CheckedChanged(object sender, EventArgs e) {
ControlStatusUpdates();
=======
ShowSetData();
}
public void ShowSetData() {
//创建配置对象
ConfigurationObject configuration = new ConfigurationObject().LoadConfiguration(ConfigFilePath);
numericUpDownRhythmicMagnification.Value = (decimal)configuration.DefaultRadical;
numericUpDownSpectralShift.Value = (decimal)configuration.DefaultOffset;
numericUpDownFourierVariation.Value = configuration.DefaultFourierVariation;
StartColor.BackColor = configuration.DefaultColor;
StopColor.BackColor = configuration.DefaultStopColor;
checkBoxUseDefault.Checked = configuration.UseDefaultColorOrNOt;
numericUpDownNumberOfColors.Value = configuration.NumberOfColors;
checkBoxMonochrome.Checked = configuration.MonochromeOrNot;
BackgroundColor.BackColor = configuration.BackgroundColor;
checkBoxImgOrColor.Checked = configuration.BackImgOrNot;
if (configuration.BackgroundImagePath != null) {
BackgroundImage.Image = Image.FromFile(configuration.BackgroundImagePath);
}
BackImagePath = configuration.BackgroundImagePath;
checkBoxWavyLine.Checked = configuration.WavyLine;
checkBoxFrame.Checked = configuration.Frame;
checkBoxRotundity.Checked = configuration.Rotundity;
checkBoxBottomEdge.Checked = configuration.Stripe;
MainWindow.configurationObject = configuration;
}
private void buttonReset_Click(object sender, EventArgs e) {
new ConfigurationObject().SaveConfiguration(ConfigFilePath);
ShowSetData();
}
private void checkBoxMonochrome_CheckedChanged(object sender, EventArgs e) {
//如果选中,禁用停止颜色选项卡
StopColor.Cursor = checkBoxMonochrome.Checked ? Cursors.No : Cursors.Hand;
StopColor.Enabled = !checkBoxMonochrome.Checked;
if (checkBoxMonochrome.Checked && checkBoxUseDefault.Checked) {
checkBoxUseDefault.Checked = false;
}
numericUpDownNumberOfColors.Enabled = !checkBoxMonochrome.Checked;
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
private void StartColor_Click(object sender, EventArgs e) {
//创建颜色选择器
ColorDialog startColorDialog = new ColorDialog();
if (startColorDialog.ShowDialog() == DialogResult.OK) {
StartColor.BackColor = startColorDialog.Color;
}
}
private void StopColor_Click(object sender, EventArgs e) {
ColorDialog stopColorDialog = new ColorDialog();
if (stopColorDialog.ShowDialog() == DialogResult.OK) {
StopColor.BackColor = stopColorDialog.Color;
}
}
private void BackgroundColor_Click(object sender, EventArgs e) {
ColorDialog backgroundColorDialog = new ColorDialog();
if (backgroundColorDialog.ShowDialog() == DialogResult.OK) {
BackgroundColor.BackColor = backgroundColorDialog.Color;
}
}
/// <summary>
/// 是否使用系统默认颜色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void checkBoxUseDefault_CheckedChanged(object sender, EventArgs e) {
StartColor.Enabled = !checkBoxUseDefault.Checked;
StopColor.Enabled = !checkBoxUseDefault.Checked;
if (checkBoxUseDefault.Checked && checkBoxMonochrome.Checked) {
checkBoxMonochrome.Checked = false;
}
numericUpDownNumberOfColors.Enabled = !checkBoxUseDefault.Checked;
}
private void ImgOrColor_CheckedChanged(object sender, EventArgs e) {
//选中时,背景颜色选项将不能被点击
BackgroundColor.Enabled = !checkBoxImgOrColor.Checked;
BackgroundImage.Enabled = checkBoxImgOrColor.Checked;
}
private void BackgroundImage_Click(object sender, EventArgs e) {
//创建文件选择框,并显示,选择文件
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "图片文件(*.png;*.jpg;*.jpeg)|*.png;*.jpg;*.jpeg";
dialog.Title = "请选择一张图片作为背景";
if (dialog.ShowDialog() == DialogResult.OK) {
BackImagePath = dialog.FileName;
BackgroundImage.Image = Image.FromFile(dialog.FileName);
}
}
private void SetFrom_FormClosed(object sender, FormClosedEventArgs e) {
<<<<<<< HEAD
DisposeVideo();
Visible = false;
}
/// <summary>
/// 获取当期窗体所在屏幕
/// </summary>
private Screen GetThisWindowOnScreen() {
return Screen.FromControl(this);
}
private void SetFrom_LocationChanged(object sender, EventArgs e) {
//防抖调用showsetdata函数
debounceTimer.Stop();
debounceTimer.Start();
}
/// <summary>
/// 防抖
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DebounceTimer_Tick(object sender, EventArgs e) {
this.Invoke(new Action(() => {
if (GetThisWindowOnScreen().GetHashCode() != NowWindowOnScrenn.GetHashCode()) {
ShowSetData();
}
ControlStatusUpdates();
}));
}
private void checkBoxUsingUnifiedConfiguration_CheckedChanged(object sender, EventArgs e) {
if (checkBoxUsingUnifiedConfiguration.Checked) {
}
}
private void checkBoxIsShow_CheckedChanged(object sender, EventArgs e) {
ControlStatusUpdates();
if (checkBoxIsShow.Checked && UseOtherWallpaper.Checked) {
UseOtherWallpaper.Checked = false;
}
}
/// <summary>
/// 统一更新控件状态
/// </summary>
private void ControlStatusUpdates() {
bool IsShow = checkBoxIsShow.Checked;
Display.Enabled = IsShow;
groupBoxColor.Enabled = IsShow;
Effect.Enabled = IsShow;
checkBoxUsingUnifiedConfiguration.Enabled = IsShow;
//是否单色 如果选中,禁用停止颜色选项卡
StopColor.Cursor = checkBoxMonochrome.Checked ? Cursors.No : Cursors.Hand;
StopColor.Enabled = !checkBoxMonochrome.Checked;
if (checkBoxMonochrome.Checked && checkBoxUseDefault.Checked) {
checkBoxUseDefault.Checked = false;
}
numericUpDownNumberOfColors.Enabled = !checkBoxMonochrome.Checked;
}
/// <summary>
/// 是否使用第三方壁纸
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void UseOtherWallpaper_CheckedChanged(object sender, EventArgs e) {
if (UseOtherWallpaper.Checked && checkBoxIsShow.Checked) {
checkBoxIsShow.Checked = false;
}
}
/// <summary>
/// 视频
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void videoView1_Click(object sender, EventArgs e) {
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "视频(*.MP4;*.AVI;*.MKV;*.MOV;*.WMV)|*.MP4;*.AVI;*.MKV;*.MOV;*.WMV";
dialog.Title = "请选择一个视频文件作为壁纸";
if (dialog.ShowDialog() == DialogResult.OK) {
OtherVideoPath = dialog.FileName;
videoViewPlayer(OtherVideoPath);
}
}
/// <summary>
/// 音量滑动条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trackBarVideoVolume_Scroll(object sender, EventArgs e) {
VideoVolumeLabel.Text = trackBarVideoVolume.Value.ToString();
if (mediaPlayer != null) {
mediaPlayer.Volume = trackBarVideoVolume.Value;
}
}
/// <summary>
/// 速率滑动条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trackBarVideoRate_Scroll(object sender, EventArgs e) {
VideoRateLabel.Text = ((float)trackBarVideoRate.Value / 10f).ToString();
if (mediaPlayer != null) {
mediaPlayer.SetRate((float)trackBarVideoRate.Value / 10f);
}
}
private void videoViewPlayer(String? url) {
if (url == null) {
return;
}
if (libVLC == null) {
libVLC = new LibVLC();
}
Uri? uri = null;
try {
uri = new Uri(url);
} catch (Exception) {
return;
};
if (uri == null) {
return;
}
media = new Media(libVLC, uri);
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer(libVLC);
mediaPlayer.TimeChanged += MediaPlayer_TimeChanged;
mediaPlayer.EndReached += MediaPlayer_EndReached;
}
videoView1.MediaPlayer = mediaPlayer;
System.GC.Collect();
mediaPlayer.SetRate((float)trackBarVideoRate.Value / 10f);
mediaPlayer.Mute = true;
mediaPlayer.Play(media);
}
private void MediaPlayer_TimeChanged(object? sender, MediaPlayerTimeChangedEventArgs e) {
if (e.Time >= 3000 && mediaPlayer != null && media != null) {
mediaPlayer.Position = 0;
}
}
private void MediaPlayer_EndReached(object? sender, EventArgs e) {
if (media != null && mediaPlayer != null) {
ThreadPool.QueueUserWorkItem((p) => mediaPlayer.Play(media));
}
}
private void DisposeVideo() {
if (mediaPlayer != null) {
mediaPlayer.TimeChanged -= MediaPlayer_TimeChanged;
mediaPlayer.EndReached -= MediaPlayer_EndReached;
mediaPlayer.Stop();
mediaPlayer.Dispose();
mediaPlayer = null;
}
if (media != null) {
media.Dispose();
media = null;
}
GC.Collect();
}
/// <summary>
/// 其他配置保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OtherSaveBtn_Click(object sender, EventArgs e) {
SavaConfig();
}
private void OtherResetBtn_Click(object sender, EventArgs e) {
VideoWallpaperConfigObject videoWallpaperConfigObject = new VideoWallpaperConfigObject();
videoWallpaperConfigObject.SettingForScreenName = NowWindowOnScrenn.DeviceName;
videoWallpaperConfigObject.SaveConfig(ConfigFilePath);
ShowSetData();
}
=======
if (setFrom != null) {
setFrom.Dispose();
setFrom = null;
}
}
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
}
}

View File

@@ -0,0 +1,210 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAAAAAAAEAIADDEwAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAlw
SFlzAAAOxAAADsQBlSsOGwAAE3VJREFUeJzt3XuUJFV9B/Dvr+dR1cuywspDke3qXRAwAYnyxihgICcY
TESRqFE4RwWTg8h2zbKAIu6JSJZ1poZHkJz1eAI+IyBgApiokOhRBBVBMfFgkJ1qYBUFVhZ2u2pmun75
g1nZR1VPP253V8/9fv7sW/f270xPfbtefS9ARERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERE85F+F0C9ccCq5/epJyNfVOCU7K30U2FQvLR3VVG/
MQAWuP0runRI4o0AnKY7CT4TTrjnda8qygsGwALmVaIAgkq7/cPA5f/HAscPeIHy/Og5AEs6HYchsLDx
w12AjjhXR55eHE+bGo8hsHDxg12APD9SowOK/CCccI43OiblwnC/CyCzSmPxGdB59n+Vt4eTzm3b9blB
VM/O3l6PM1Yg5QqPABaYRt/+ClxQDdxr2unL04CFiR/qApO1ExdET9gwUfxuu/0BfDYM3HM7Ko5yh6cA
C0hpLLoe6bvvxmZ2fgCoq7x2SPRnKU3nAGAALDAMgAVEFKenvV6oz76+2TGemHQe9vzIXFGUawyAhWXf
tBc3XL34qRbH+T2APTovh/KOAUBpngEDwAoMACKLMQCILMYAILIYA4DIYgwAIosxAIgsxgAgshgDgMhi
DAAiizEAiCzGACCyGAOAyGIMACKLMQCILMYAILIYA4DIYgwAIosxAIgsxgAgshgDgMhiDAAiizEAumzZ
6i37DdWHj04Uh0Pxi/pI/d4n1y16ot915cX+FS0OIXqPihwlioNRwI8U8sPqhHNLv2uzAQOgCzy/dhIg
dwFwMQso9MU12AQYni3gpYU39CthUHxP/yrtn9JYdIEorgJiAPKHvw8UJwr0D38jAdZNBe5FfSx1QePa
gAYdeP7ze8+MjPwawFCLXYMwcMc6ff+sdf1aXdjT86NHARzQ6TiZ41fi+yB6TCt9FPq+alD8oon3p5fw
CMCQciX+6xnR29vs7pcq8f3VSecmo0XlzRoteJvjOjIWMGxEIF/w/GhNGLgHdqEyazEADChXamer6A2d
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
</value>
</data>
</root>

View File

@@ -0,0 +1,214 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<<<<<<< HEAD
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
=======
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAAAAAAAEAIADDEwAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAlw
SFlzAAAOxAAADsQBlSsOGwAAE3VJREFUeJzt3XuUJFV9B/Dvr+dR1cuywspDke3qXRAwAYnyxihgICcY
TESRqFE4RwWTg8h2zbKAIu6JSJZ1poZHkJz1eAI+IyBgApiokOhRBBVBMfFgkJ1qYBUFVhZ2u2pmun75
g1nZR1VPP253V8/9fv7sW/f270xPfbtefS9ARERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERE85F+F0C9ccCq5/epJyNfVOCU7K30U2FQvLR3VVG/
MQAWuP0runRI4o0AnKY7CT4TTrjnda8qygsGwALmVaIAgkq7/cPA5f/HAscPeIHy/Og5AEs6HYchsLDx
w12AjjhXR55eHE+bGo8hsHDxg12APD9SowOK/CCccI43OiblwnC/CyCzSmPxGdB59n+Vt4eTzm3b9blB
VM/O3l6PM1Yg5QqPABaYRt/+ClxQDdxr2unL04CFiR/qApO1ExdET9gwUfxuu/0BfDYM3HM7Ko5yh6cA
C0hpLLoe6bvvxmZ2fgCoq7x2SPRnKU3nAGAALDAMgAVEFKenvV6oz76+2TGemHQe9vzIXFGUawyAhWXf
tBc3XL34qRbH+T2APTovh/KOAUBpngEDwAoMACKLMQCILMYAILIYA4DIYgwAIosxAIgsxgAgshgDgMhi
DAAiizEAiCzGACCyGAOAyGIMACKLMQCILMYAILIYA4DIYgwAIosxAIgsxgAgshgDgMhiDAAiizEAumzZ
6i37DdWHj04Uh0Pxi/pI/d4n1y16ot915cX+FS0OIXqPihwlioNRwI8U8sPqhHNLv2uzAQOgCzy/dhIg
dwFwMQso9MU12AQYni3gpYU39CthUHxP/yrtn9JYdIEorgJiAPKHvw8UJwr0D38jAdZNBe5FfSx1QePa
gAYdeP7ze8+MjPwawFCLXYMwcMc6ff+sdf1aXdjT86NHARzQ6TiZ41fi+yB6TCt9FPq+alD8oon3p5fw
CMCQciX+6xnR29vs7pcq8f3VSecmo0XlzRoteJvjOjIWMGxEIF/w/GhNGLgHdqEyazEADChXamer6A2d
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
</value>
</data>
</root>

View File

@@ -0,0 +1,182 @@
namespace AudioWallpaper {
partial class VersionInformationForm {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VersionInformationForm));
linkLabelURLHome = new LinkLabel();
labelAuthor = new Label();
backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
backgroundWorker2 = new System.ComponentModel.BackgroundWorker();
labelEdition = new Label();
backgroundWorker3 = new System.ComponentModel.BackgroundWorker();
labelCopyright = new Label();
backgroundWorker4 = new System.ComponentModel.BackgroundWorker();
pictureBoxCopyright = new PictureBox();
pictureBoxIcon = new PictureBox();
pictureBoxLogo = new PictureBox();
linkLabelSponsor = new LinkLabel();
((System.ComponentModel.ISupportInitialize)pictureBoxCopyright).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBoxIcon).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBoxLogo).BeginInit();
SuspendLayout();
//
// linkLabelURLHome
//
linkLabelURLHome.AutoSize = true;
linkLabelURLHome.Font = new Font("宋体", 24F, FontStyle.Bold, GraphicsUnit.Point);
linkLabelURLHome.Location = new Point(82, 125);
linkLabelURLHome.Margin = new Padding(4, 0, 4, 0);
linkLabelURLHome.Name = "linkLabelURLHome";
linkLabelURLHome.Size = new Size(412, 33);
linkLabelURLHome.TabIndex = 2;
linkLabelURLHome.TabStop = true;
linkLabelURLHome.Text = "律动壁纸——IT资源网产品";
linkLabelURLHome.LinkClicked += linkLabelURLHome_LinkClicked;
//
// labelAuthor
//
labelAuthor.AutoSize = true;
labelAuthor.Font = new Font("华文行楷", 18F, FontStyle.Regular, GraphicsUnit.Point);
labelAuthor.Location = new Point(222, 176);
labelAuthor.Margin = new Padding(4, 0, 4, 0);
labelAuthor.Name = "labelAuthor";
labelAuthor.Size = new Size(132, 25);
labelAuthor.TabIndex = 3;
labelAuthor.Text = "李传玖开发";
//
// labelEdition
//
labelEdition.AutoSize = true;
labelEdition.Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelEdition.Location = new Point(186, 206);
labelEdition.Margin = new Padding(4, 0, 4, 0);
labelEdition.Name = "labelEdition";
labelEdition.Size = new Size(77, 12);
labelEdition.TabIndex = 4;
labelEdition.Text = "版本号:1.2.3";
//
// labelCopyright
//
labelCopyright.AutoSize = true;
labelCopyright.Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelCopyright.Location = new Point(336, 206);
labelCopyright.Margin = new Padding(4, 0, 4, 0);
labelCopyright.Name = "labelCopyright";
labelCopyright.Size = new Size(41, 12);
labelCopyright.TabIndex = 5;
labelCopyright.Text = "李传玖";
//
// pictureBoxCopyright
//
pictureBoxCopyright.Image = (Image)resources.GetObject("pictureBoxCopyright.Image");
pictureBoxCopyright.Location = new Point(321, 206);
pictureBoxCopyright.Name = "pictureBoxCopyright";
pictureBoxCopyright.Size = new Size(12, 12);
pictureBoxCopyright.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxCopyright.TabIndex = 6;
pictureBoxCopyright.TabStop = false;
//
// pictureBoxIcon
//
pictureBoxIcon.Cursor = Cursors.Hand;
pictureBoxIcon.Image = (Image)resources.GetObject("pictureBoxIcon.Image");
pictureBoxIcon.Location = new Point(-1, 116);
pictureBoxIcon.Margin = new Padding(4, 3, 4, 3);
pictureBoxIcon.Name = "pictureBoxIcon";
pictureBoxIcon.Size = new Size(69, 50);
pictureBoxIcon.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxIcon.TabIndex = 1;
pictureBoxIcon.TabStop = false;
//
// pictureBoxLogo
//
pictureBoxLogo.Cursor = Cursors.Hand;
pictureBoxLogo.Image = (Image)resources.GetObject("pictureBoxLogo.Image");
pictureBoxLogo.Location = new Point(-1, 1);
pictureBoxLogo.Margin = new Padding(4, 3, 4, 3);
pictureBoxLogo.Name = "pictureBoxLogo";
pictureBoxLogo.Size = new Size(519, 104);
pictureBoxLogo.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxLogo.TabIndex = 0;
pictureBoxLogo.TabStop = false;
pictureBoxLogo.Click += pictureBoxLogo_Click;
//
// linkLabelSponsor
//
linkLabelSponsor.AutoSize = true;
linkLabelSponsor.Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point);
linkLabelSponsor.Location = new Point(247, 228);
linkLabelSponsor.Name = "linkLabelSponsor";
linkLabelSponsor.Size = new Size(53, 12);
linkLabelSponsor.TabIndex = 7;
linkLabelSponsor.TabStop = true;
linkLabelSponsor.Text = "赞助开发";
linkLabelSponsor.LinkClicked += linkLabelSponsor_LinkClicked;
//
// VersionInformationForm
//
AutoScaleDimensions = new SizeF(7F, 12F);
AutoScaleMode = AutoScaleMode.Font;
AutoSize = true;
ClientSize = new Size(518, 246);
Controls.Add(linkLabelSponsor);
Controls.Add(pictureBoxCopyright);
Controls.Add(labelCopyright);
Controls.Add(labelEdition);
Controls.Add(labelAuthor);
Controls.Add(linkLabelURLHome);
Controls.Add(pictureBoxIcon);
Controls.Add(pictureBoxLogo);
Font = new Font("宋体", 9F, FontStyle.Bold | FontStyle.Italic, GraphicsUnit.Point);
FormBorderStyle = FormBorderStyle.FixedSingle;
Icon = (Icon)resources.GetObject("$this.Icon");
Margin = new Padding(4, 3, 4, 3);
MaximizeBox = false;
MinimizeBox = false;
Name = "VersionInformationForm";
StartPosition = FormStartPosition.CenterScreen;
Text = "关于我们";
((System.ComponentModel.ISupportInitialize)pictureBoxCopyright).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBoxIcon).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBoxLogo).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private PictureBox pictureBoxLogo;
private PictureBox pictureBoxIcon;
private LinkLabel linkLabelURLHome;
private Label labelAuthor;
private System.ComponentModel.BackgroundWorker backgroundWorker1;
private System.ComponentModel.BackgroundWorker backgroundWorker2;
private Label labelEdition;
private System.ComponentModel.BackgroundWorker backgroundWorker3;
private Label labelCopyright;
private System.ComponentModel.BackgroundWorker backgroundWorker4;
private PictureBox pictureBoxCopyright;
private LinkLabel linkLabelSponsor;
}
}

View File

@@ -0,0 +1,193 @@
<<<<<<< HEAD
namespace AudioWallpaper {
=======
namespace AudioVisualizer {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
partial class VersionInformationForm {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VersionInformationForm));
linkLabelURLHome = new LinkLabel();
labelAuthor = new Label();
backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
backgroundWorker2 = new System.ComponentModel.BackgroundWorker();
labelEdition = new Label();
backgroundWorker3 = new System.ComponentModel.BackgroundWorker();
labelCopyright = new Label();
backgroundWorker4 = new System.ComponentModel.BackgroundWorker();
pictureBoxCopyright = new PictureBox();
pictureBoxIcon = new PictureBox();
pictureBoxLogo = new PictureBox();
linkLabelSponsor = new LinkLabel();
((System.ComponentModel.ISupportInitialize)pictureBoxCopyright).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBoxIcon).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureBoxLogo).BeginInit();
SuspendLayout();
//
// linkLabelURLHome
//
linkLabelURLHome.AutoSize = true;
linkLabelURLHome.Font = new Font("宋体", 24F, FontStyle.Bold, GraphicsUnit.Point);
linkLabelURLHome.Location = new Point(82, 125);
linkLabelURLHome.Margin = new Padding(4, 0, 4, 0);
linkLabelURLHome.Name = "linkLabelURLHome";
linkLabelURLHome.Size = new Size(412, 33);
linkLabelURLHome.TabIndex = 2;
linkLabelURLHome.TabStop = true;
linkLabelURLHome.Text = "律动壁纸——IT资源网产品";
linkLabelURLHome.LinkClicked += linkLabelURLHome_LinkClicked;
//
// labelAuthor
//
labelAuthor.AutoSize = true;
labelAuthor.Font = new Font("华文行楷", 18F, FontStyle.Regular, GraphicsUnit.Point);
labelAuthor.Location = new Point(222, 176);
labelAuthor.Margin = new Padding(4, 0, 4, 0);
labelAuthor.Name = "labelAuthor";
labelAuthor.Size = new Size(132, 25);
labelAuthor.TabIndex = 3;
labelAuthor.Text = "李传玖开发";
//
// labelEdition
//
labelEdition.AutoSize = true;
labelEdition.Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelEdition.Location = new Point(186, 206);
labelEdition.Margin = new Padding(4, 0, 4, 0);
labelEdition.Name = "labelEdition";
labelEdition.Size = new Size(77, 12);
labelEdition.TabIndex = 4;
<<<<<<< HEAD
labelEdition.Text = "版本号:1.2.3";
=======
labelEdition.Text = "版本号:1.0.1";
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
//
// labelCopyright
//
labelCopyright.AutoSize = true;
labelCopyright.Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point);
labelCopyright.Location = new Point(336, 206);
labelCopyright.Margin = new Padding(4, 0, 4, 0);
labelCopyright.Name = "labelCopyright";
labelCopyright.Size = new Size(41, 12);
labelCopyright.TabIndex = 5;
labelCopyright.Text = "李传玖";
//
// pictureBoxCopyright
//
pictureBoxCopyright.Image = (Image)resources.GetObject("pictureBoxCopyright.Image");
pictureBoxCopyright.Location = new Point(321, 206);
pictureBoxCopyright.Name = "pictureBoxCopyright";
pictureBoxCopyright.Size = new Size(12, 12);
pictureBoxCopyright.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxCopyright.TabIndex = 6;
pictureBoxCopyright.TabStop = false;
//
// pictureBoxIcon
//
pictureBoxIcon.Cursor = Cursors.Hand;
pictureBoxIcon.Image = (Image)resources.GetObject("pictureBoxIcon.Image");
pictureBoxIcon.Location = new Point(-1, 116);
pictureBoxIcon.Margin = new Padding(4, 3, 4, 3);
pictureBoxIcon.Name = "pictureBoxIcon";
pictureBoxIcon.Size = new Size(69, 50);
pictureBoxIcon.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxIcon.TabIndex = 1;
pictureBoxIcon.TabStop = false;
//
// pictureBoxLogo
//
pictureBoxLogo.Cursor = Cursors.Hand;
pictureBoxLogo.Image = (Image)resources.GetObject("pictureBoxLogo.Image");
pictureBoxLogo.Location = new Point(-1, 1);
pictureBoxLogo.Margin = new Padding(4, 3, 4, 3);
pictureBoxLogo.Name = "pictureBoxLogo";
pictureBoxLogo.Size = new Size(519, 104);
pictureBoxLogo.SizeMode = PictureBoxSizeMode.Zoom;
pictureBoxLogo.TabIndex = 0;
pictureBoxLogo.TabStop = false;
pictureBoxLogo.Click += pictureBoxLogo_Click;
//
// linkLabelSponsor
//
linkLabelSponsor.AutoSize = true;
linkLabelSponsor.Font = new Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point);
linkLabelSponsor.Location = new Point(247, 228);
linkLabelSponsor.Name = "linkLabelSponsor";
linkLabelSponsor.Size = new Size(53, 12);
linkLabelSponsor.TabIndex = 7;
linkLabelSponsor.TabStop = true;
linkLabelSponsor.Text = "赞助开发";
linkLabelSponsor.LinkClicked += linkLabelSponsor_LinkClicked;
//
// VersionInformationForm
//
AutoScaleDimensions = new SizeF(7F, 12F);
AutoScaleMode = AutoScaleMode.Font;
<<<<<<< HEAD
AutoSize = true;
=======
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
ClientSize = new Size(518, 246);
Controls.Add(linkLabelSponsor);
Controls.Add(pictureBoxCopyright);
Controls.Add(labelCopyright);
Controls.Add(labelEdition);
Controls.Add(labelAuthor);
Controls.Add(linkLabelURLHome);
Controls.Add(pictureBoxIcon);
Controls.Add(pictureBoxLogo);
Font = new Font("宋体", 9F, FontStyle.Bold | FontStyle.Italic, GraphicsUnit.Point);
FormBorderStyle = FormBorderStyle.FixedSingle;
Icon = (Icon)resources.GetObject("$this.Icon");
Margin = new Padding(4, 3, 4, 3);
MaximizeBox = false;
MinimizeBox = false;
Name = "VersionInformationForm";
StartPosition = FormStartPosition.CenterScreen;
Text = "关于我们";
((System.ComponentModel.ISupportInitialize)pictureBoxCopyright).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBoxIcon).EndInit();
((System.ComponentModel.ISupportInitialize)pictureBoxLogo).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private PictureBox pictureBoxLogo;
private PictureBox pictureBoxIcon;
private LinkLabel linkLabelURLHome;
private Label labelAuthor;
private System.ComponentModel.BackgroundWorker backgroundWorker1;
private System.ComponentModel.BackgroundWorker backgroundWorker2;
private Label labelEdition;
private System.ComponentModel.BackgroundWorker backgroundWorker3;
private Label labelCopyright;
private System.ComponentModel.BackgroundWorker backgroundWorker4;
private PictureBox pictureBoxCopyright;
private LinkLabel linkLabelSponsor;
}
}

View File

@@ -0,0 +1,19 @@
namespace AudioWallpaper {
public partial class VersionInformationForm : Form {
public VersionInformationForm() {
InitializeComponent();
}
private void pictureBoxLogo_Click(object sender, EventArgs e) {
System.Diagnostics.Process.Start("explorer.exe", "https://www.itziyuanwang.top/");
}
private void linkLabelURLHome_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
System.Diagnostics.Process.Start("explorer.exe", "https://www.itziyuanwang.top/");
}
private void linkLabelSponsor_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
System.Diagnostics.Process.Start("explorer.exe", "https://www.itziyuanwang.top/supportOur.php");
}
}
}

View File

@@ -0,0 +1,26 @@
<<<<<<< HEAD
namespace AudioWallpaper {
=======
using System;
using System.Windows.Forms;
namespace AudioVisualizer {
>>>>>>> 5cb18e9cc33bf9825472ca3181da76afddd9de36
public partial class VersionInformationForm : Form {
public VersionInformationForm() {
InitializeComponent();
}
private void pictureBoxLogo_Click(object sender, EventArgs e) {
System.Diagnostics.Process.Start("explorer.exe", "https://www.itziyuanwang.top/");
}
private void linkLabelURLHome_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
System.Diagnostics.Process.Start("explorer.exe", "https://www.itziyuanwang.top/");
}
private void linkLabelSponsor_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
System.Diagnostics.Process.Start("explorer.exe", "https://www.itziyuanwang.top/supportOur.php");
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,61 @@

namespace AudioWallpaper {
partial class VideoWallpaperWindow {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
videoView1 = new LibVLCSharp.WinForms.VideoView();
((System.ComponentModel.ISupportInitialize)videoView1).BeginInit();
SuspendLayout();
//
// videoView1
//
videoView1.BackColor = Color.Black;
videoView1.Dock = DockStyle.Fill;
videoView1.Location = new Point(0, 0);
videoView1.MediaPlayer = null;
videoView1.Name = "videoView1";
videoView1.Size = new Size(800, 450);
videoView1.TabIndex = 0;
videoView1.Text = "videoView1";
//
// VideoWallpaperWindow
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
Controls.Add(videoView1);
FormBorderStyle = FormBorderStyle.None;
Name = "VideoWallpaperWindow";
Text = "VideoWallpaperWindow";
FormClosing += VideoWallpaperWindow_FormClosing;
((System.ComponentModel.ISupportInitialize)videoView1).EndInit();
ResumeLayout(false);
}
#endregion
private LibVLCSharp.WinForms.VideoView videoView1;
}
}

View File

@@ -0,0 +1,157 @@

using AudioWallpaper.Entity;
using LibVLCSharp.Shared;
namespace AudioWallpaper {
public partial class VideoWallpaperWindow : Form {
private IntPtr programIntPtr = IntPtr.Zero;
private LibVLC? libVLC = new LibVLC();
private MediaPlayer? mediaPlayer;
private Media? media;
private VideoWallpaperConfigObject videoWallpaperConfig;
private AppBarManager appBarManager;
public delegate void FullScreenDetected(bool status);
public event FullScreenDetected FullScreenDetectedEvent;
public VideoWallpaperWindow(VideoWallpaperConfigObject videoWallpaperConfigObject) {
videoWallpaperConfig = videoWallpaperConfigObject;
appBarManager = new AppBarManager(Handle);
InitializeComponent();
Init();
Win32.SetParent(Handle, programIntPtr);
PlayerWallPaper();
}
protected override void WndProc(ref Message m) {
if (appBarManager != null && m.Msg == appBarManager.uCallbackMessage) {
switch ((int)m.WParam) {
case AppBarManager.ABN_FULLSCREENAPP:
bool isFullScreen = m.LParam != IntPtr.Zero;
if (isFullScreen) {
SetFrom.FullScreenWindowCount++;
} else {
SetFrom.FullScreenWindowCount--;
}
ChangeVideoPlayerStatus(SetFrom.FullScreenWindowCount <= 0);
//通知其它窗体停止渲染
FullScreenDetectedEvent(SetFrom.FullScreenWindowCount <= 0);
break;
}
}
base.WndProc(ref m);
}
public void DisposeAppBarManager() {
appBarManager.Dispose();
}
public void PlayerWallPaper() {
if (mediaPlayer == null && libVLC != null) {
mediaPlayer = new MediaPlayer(libVLC);
videoView1.MediaPlayer = mediaPlayer;
mediaPlayer.EndReached += MediaPlayer_EndReached;
}
try {
mediaPlayer.SetRate((float)videoWallpaperConfig.Rate / 10f);
mediaPlayer.Volume = videoWallpaperConfig.Volume;
media = new Media(libVLC, new Uri(videoWallpaperConfig.Url));
mediaPlayer.Play(media);
} catch (Exception e) {
Console.WriteLine(e.StackTrace);
}
GC.Collect();
}
/// <summary>
/// 监听视频播放结束事件,重复播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MediaPlayer_EndReached(object? sender, EventArgs e) {
if (media != null && mediaPlayer != null) {
ThreadPool.QueueUserWorkItem((p) => { mediaPlayer.Play(media); GC.Collect(); });
}
}
public void ReShow(int x, int y, int width, int height) {
SetBounds(x, y, width, height);
}
public void ReShow(VideoWallpaperConfigObject videoWallpaperConfigObject) {
if (videoWallpaperConfig.Url != null && videoWallpaperConfig.Url.Equals(videoWallpaperConfigObject.Url) && media != null && mediaPlayer != null) {
mediaPlayer.SetRate((float)videoWallpaperConfigObject.Rate / 10f);
mediaPlayer.Volume = videoWallpaperConfigObject.Volume;
videoWallpaperConfig = videoWallpaperConfigObject;
return;
}
videoWallpaperConfig = videoWallpaperConfigObject;
PlayerWallPaper();
}
/// <summary>
/// 窗体被关闭时,关闭视频播放相关
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void VideoWallpaperWindow_FormClosing(object sender, FormClosingEventArgs e) {
VideoDispose();
}
public void VideoDispose() {
if (mediaPlayer != null) {
mediaPlayer.EndReached -= MediaPlayer_EndReached;
mediaPlayer.Stop();
mediaPlayer.Dispose();
mediaPlayer = null;
}
if (media != null) {
media.Dispose();
media = null;
}
if (libVLC != null) {
libVLC.Dispose();
libVLC = null;
}
}
public void ChangeVideoPlayerStatus(bool status) {
if (!videoWallpaperConfig.AutoStopWallPaper) {
if (mediaPlayer != null) {
mediaPlayer.SetPause(false);
}
return;
}
if (mediaPlayer != null) {
mediaPlayer.SetPause(!status);
}
}
public void Init() {
// 通过类名查找一个窗口,返回窗口句柄。
programIntPtr = Win32.FindWindow("Progman", null);
// 窗口句柄有效
if (programIntPtr != IntPtr.Zero) {
IntPtr result = IntPtr.Zero;
// 向 Program Manager 窗口发送 0x52c 的一个消息超时设置为0x3e81秒
Win32.SendMessageTimeout(programIntPtr, 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 0x3e8, result);
// 遍历顶级窗口
Win32.EnumWindows((hwnd, lParam) => {
// 找到包含 SHELLDLL_DefView 这个窗口句柄的 WorkerW
if (Win32.FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero) {
// 找到当前 WorkerW 窗口的,后一个 WorkerW 窗口。
IntPtr tempHwnd = Win32.FindWindowEx(IntPtr.Zero, hwnd, "WorkerW", null);
Win32.ShowWindow(tempHwnd, 0);
}
return true;
}, IntPtr.Zero);
}
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

45
AudioVisualizer/Win32.cs Normal file
View File

@@ -0,0 +1,45 @@
using System.Runtime.InteropServices;
namespace AudioWallpaper {
public static class Win32 {
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string className, string winName);
[DllImport("user32.dll")]
public static extern IntPtr SendMessageTimeout(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr lParam, uint fuFlage, uint timeout, IntPtr result);
[DllImport("user32.dll")]
public static extern bool EnumWindows(EnumWindowsProc proc, IntPtr lParam);
public delegate bool EnumWindowsProc(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string className, string winName);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hwnd, IntPtr parentHwnd);
[DllImport("shell32.dll")]
public static extern uint SHAppBarMessage(uint dwMessage, ref APPBARDATA pData);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern uint RegisterWindowMessage(string lpString);
[StructLayout(LayoutKind.Sequential)]
public struct APPBARDATA {
public int cbSize;
public IntPtr hWnd;
public uint uCallbackMessage;
public uint uEdge;
public RECT rc;
public int lParam;
}
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int left;
public int top;
public int right;
public int bottom;
}
}
}

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC 清单选项
如果想要更改 Windows 用户帐户控制级别,请使用
以下节点之一替换 requestedExecutionLevel 节点。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
如果你的应用程序需要此虚拟化来实现向后兼容性,则移除此
元素。
-->
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
Windows 版本的列表。取消评论适当的元素,
Windows 将自动选择最兼容的环境。 -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
</application>
</compatibility>
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI无需
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">false</longPathAware>
</windowsSettings>
</application>
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

Binary file not shown.

View File

@@ -0,0 +1,323 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"AudioWallpaper/1.2.1": {
"dependencies": {
"LibAudioVisualizer": "1.0.0",
"LibVLCSharp.WinForms": "3.8.2",
"NAudio": "2.2.1",
"System.Management": "8.0.0",
"VideoLAN.LibVLC.Windows": "3.0.20"
},
"runtime": {
"AudioWallpaper.dll": {}
}
},
"FftSharp/1.1.6": {
"runtime": {
"lib/net5.0/FftSharp.dll": {
"assemblyVersion": "1.1.6.0",
"fileVersion": "1.1.6.0"
}
}
},
"LibVLCSharp/3.8.2": {
"runtime": {
"lib/net6.0/LibVLCSharp.dll": {
"assemblyVersion": "3.8.2.0",
"fileVersion": "3.8.2.0"
}
}
},
"LibVLCSharp.WinForms/3.8.2": {
"dependencies": {
"LibVLCSharp": "3.8.2"
},
"runtime": {
"lib/net6.0-windows7.0/LibVLCSharp.WinForms.dll": {
"assemblyVersion": "3.8.2.0",
"fileVersion": "3.8.2.0"
}
}
},
"Microsoft.NETCore.Platforms/3.1.0": {},
"Microsoft.Win32.Registry/4.7.0": {
"dependencies": {
"System.Security.AccessControl": "4.7.0",
"System.Security.Principal.Windows": "4.7.0"
}
},
"NAudio/2.2.1": {
"dependencies": {
"NAudio.Asio": "2.2.1",
"NAudio.Core": "2.2.1",
"NAudio.Midi": "2.2.1",
"NAudio.Wasapi": "2.2.1",
"NAudio.WinForms": "2.2.1",
"NAudio.WinMM": "2.2.1"
},
"runtime": {
"lib/net6.0-windows7.0/NAudio.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Asio/2.2.1": {
"dependencies": {
"Microsoft.Win32.Registry": "4.7.0",
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.Asio.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Core/2.2.1": {
"runtime": {
"lib/netstandard2.0/NAudio.Core.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Midi/2.2.1": {
"dependencies": {
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.Midi.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Wasapi/2.2.1": {
"dependencies": {
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.Wasapi.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.WinForms/2.2.1": {
"dependencies": {
"NAudio.WinMM": "2.2.1"
},
"runtime": {
"lib/netcoreapp3.1/NAudio.WinForms.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.WinMM/2.2.1": {
"dependencies": {
"Microsoft.Win32.Registry": "4.7.0",
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.WinMM.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"System.CodeDom/8.0.0": {
"runtime": {
"lib/net6.0/System.CodeDom.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.Management/8.0.0": {
"dependencies": {
"System.CodeDom": "8.0.0"
},
"runtime": {
"lib/net6.0/System.Management.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
},
"runtimeTargets": {
"runtimes/win/lib/net6.0/System.Management.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.Security.AccessControl/4.7.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.1.0",
"System.Security.Principal.Windows": "4.7.0"
}
},
"System.Security.Principal.Windows/4.7.0": {},
"VideoLAN.LibVLC.Windows/3.0.20": {},
"LibAudioVisualizer/1.0.0": {
"dependencies": {
"FftSharp": "1.1.6",
"LibDynamics": "1.0.0"
},
"runtime": {
"LibAudioVisualizer.dll": {}
}
},
"LibDynamics/1.0.0": {
"runtime": {
"LibDynamics.dll": {}
}
}
}
},
"libraries": {
"AudioWallpaper/1.2.1": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"FftSharp/1.1.6": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dGUkHaYB2huawqtMWOsqtqspYHVFIux70LDjI/2I08ZkYZ5nLS3NP9AbWxrI+tdw6oLPs8Q/dv8CJzpmoAvj/w==",
"path": "fftsharp/1.1.6",
"hashPath": "fftsharp.1.1.6.nupkg.sha512"
},
"LibVLCSharp/3.8.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P61Pkc+2GgX9PGJmm0MTVYKh0zPbak25rkyb5MU8Vq7x/VgFV/0h3L2bP7H4Oz5sfmm03H8T010cqEKQVA4Jew==",
"path": "libvlcsharp/3.8.2",
"hashPath": "libvlcsharp.3.8.2.nupkg.sha512"
},
"LibVLCSharp.WinForms/3.8.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3wL7lthadR9MvpmSBTjY7WIlnwWRrFS2YpnFaaSnOzT3NZJngujlfuvfrf+1ge7uUE3CL/6Il6P4eN9fNNa0SA==",
"path": "libvlcsharp.winforms/3.8.2",
"hashPath": "libvlcsharp.winforms.3.8.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/3.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==",
"path": "microsoft.netcore.platforms/3.1.0",
"hashPath": "microsoft.netcore.platforms.3.1.0.nupkg.sha512"
},
"Microsoft.Win32.Registry/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==",
"path": "microsoft.win32.registry/4.7.0",
"hashPath": "microsoft.win32.registry.4.7.0.nupkg.sha512"
},
"NAudio/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c0DzwiyyklM0TP39Y7RObwO3QkWecgM6H60ikiEnsV/aEAJPbj5MFCLaD8BSfKuZe0HGuh9GRGWWlJmSxDc9MA==",
"path": "naudio/2.2.1",
"hashPath": "naudio.2.2.1.nupkg.sha512"
},
"NAudio.Asio/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-hQglyOT5iT3XuGpBP8ZG0+aoqwRfidHjTNehpoWwX0g6KJEgtH2VaqM2nuJ2mheKZa/IBqB4YQTZVvrIapzfOA==",
"path": "naudio.asio/2.2.1",
"hashPath": "naudio.asio.2.2.1.nupkg.sha512"
},
"NAudio.Core/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g==",
"path": "naudio.core/2.2.1",
"hashPath": "naudio.core.2.2.1.nupkg.sha512"
},
"NAudio.Midi/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6r23ylGo5aeP02WFXsPquz0T0hFJWyh+7t++tz19tc3Kr38NHm+Z9j+FiAv+xkH8tZqXJqus9Q8p6u7bidIgbw==",
"path": "naudio.midi/2.2.1",
"hashPath": "naudio.midi.2.2.1.nupkg.sha512"
},
"NAudio.Wasapi/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lFfXoqacZZe0WqNChJgGYI+XV/n/61LzPHT3C1CJp4khoxeo2sziyX5wzNYWeCMNbsWxFvT3b3iXeY1UYjBhZw==",
"path": "naudio.wasapi/2.2.1",
"hashPath": "naudio.wasapi.2.2.1.nupkg.sha512"
},
"NAudio.WinForms/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DlDkewY1myY0A+3NrYRJD+MZhZV0yy1mNF6dckB27IQ9XCs/My5Ip8BZcoSHOsaPSe2GAjvoaDnk6N9w8xTv7w==",
"path": "naudio.winforms/2.2.1",
"hashPath": "naudio.winforms.2.2.1.nupkg.sha512"
},
"NAudio.WinMM/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==",
"path": "naudio.winmm/2.2.1",
"hashPath": "naudio.winmm.2.2.1.nupkg.sha512"
},
"System.CodeDom/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==",
"path": "system.codedom/8.0.0",
"hashPath": "system.codedom.8.0.0.nupkg.sha512"
},
"System.Management/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==",
"path": "system.management/8.0.0",
"hashPath": "system.management.8.0.0.nupkg.sha512"
},
"System.Security.AccessControl/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==",
"path": "system.security.accesscontrol/4.7.0",
"hashPath": "system.security.accesscontrol.4.7.0.nupkg.sha512"
},
"System.Security.Principal.Windows/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==",
"path": "system.security.principal.windows/4.7.0",
"hashPath": "system.security.principal.windows.4.7.0.nupkg.sha512"
},
"VideoLAN.LibVLC.Windows/3.0.20": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ahujCn2kTPJSLEpwXu2BHIyv9Ke/iahd367hFwMMHSP9UkSOYC5QekOGFrSxKz22yZP67arcfCgNgDIcV31DpQ==",
"path": "videolan.libvlc.windows/3.0.20",
"hashPath": "videolan.libvlc.windows.3.0.20.nupkg.sha512"
},
"LibAudioVisualizer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"LibDynamics/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View File

@@ -0,0 +1,15 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
{
"name": "Microsoft.WindowsDesktop.App",
"version": "6.0.0"
}
]
}
}

View File

@@ -0,0 +1,336 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"AudioWallpaperManager/1.2.1": {
"dependencies": {
"AudioWallpaper": "1.2.1"
},
"runtime": {
"AudioWallpaperManager.dll": {}
}
},
"FftSharp/1.1.6": {
"runtime": {
"lib/net5.0/FftSharp.dll": {
"assemblyVersion": "1.1.6.0",
"fileVersion": "1.1.6.0"
}
}
},
"LibVLCSharp/3.8.2": {
"runtime": {
"lib/net6.0/LibVLCSharp.dll": {
"assemblyVersion": "3.8.2.0",
"fileVersion": "3.8.2.0"
}
}
},
"LibVLCSharp.WinForms/3.8.2": {
"dependencies": {
"LibVLCSharp": "3.8.2"
},
"runtime": {
"lib/net6.0-windows7.0/LibVLCSharp.WinForms.dll": {
"assemblyVersion": "3.8.2.0",
"fileVersion": "3.8.2.0"
}
}
},
"Microsoft.NETCore.Platforms/3.1.0": {},
"Microsoft.Win32.Registry/4.7.0": {
"dependencies": {
"System.Security.AccessControl": "4.7.0",
"System.Security.Principal.Windows": "4.7.0"
}
},
"NAudio/2.2.1": {
"dependencies": {
"NAudio.Asio": "2.2.1",
"NAudio.Core": "2.2.1",
"NAudio.Midi": "2.2.1",
"NAudio.Wasapi": "2.2.1",
"NAudio.WinForms": "2.2.1",
"NAudio.WinMM": "2.2.1"
},
"runtime": {
"lib/net6.0-windows7.0/NAudio.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Asio/2.2.1": {
"dependencies": {
"Microsoft.Win32.Registry": "4.7.0",
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.Asio.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Core/2.2.1": {
"runtime": {
"lib/netstandard2.0/NAudio.Core.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Midi/2.2.1": {
"dependencies": {
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.Midi.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.Wasapi/2.2.1": {
"dependencies": {
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.Wasapi.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.WinForms/2.2.1": {
"dependencies": {
"NAudio.WinMM": "2.2.1"
},
"runtime": {
"lib/netcoreapp3.1/NAudio.WinForms.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NAudio.WinMM/2.2.1": {
"dependencies": {
"Microsoft.Win32.Registry": "4.7.0",
"NAudio.Core": "2.2.1"
},
"runtime": {
"lib/netstandard2.0/NAudio.WinMM.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"System.CodeDom/8.0.0": {
"runtime": {
"lib/net6.0/System.CodeDom.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.Management/8.0.0": {
"dependencies": {
"System.CodeDom": "8.0.0"
},
"runtime": {
"lib/net6.0/System.Management.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
},
"runtimeTargets": {
"runtimes/win/lib/net6.0/System.Management.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.Security.AccessControl/4.7.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.1.0",
"System.Security.Principal.Windows": "4.7.0"
}
},
"System.Security.Principal.Windows/4.7.0": {},
"VideoLAN.LibVLC.Windows/3.0.20": {},
"AudioWallpaper/1.2.1": {
"dependencies": {
"LibAudioVisualizer": "1.0.0",
"LibVLCSharp.WinForms": "3.8.2",
"NAudio": "2.2.1",
"System.Management": "8.0.0",
"VideoLAN.LibVLC.Windows": "3.0.20"
},
"runtime": {
"AudioWallpaper.dll": {}
}
},
"LibAudioVisualizer/1.0.0": {
"dependencies": {
"FftSharp": "1.1.6",
"LibDynamics": "1.0.0"
},
"runtime": {
"LibAudioVisualizer.dll": {}
}
},
"LibDynamics/1.0.0": {
"runtime": {
"LibDynamics.dll": {}
}
}
}
},
"libraries": {
"AudioWallpaperManager/1.2.1": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"FftSharp/1.1.6": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dGUkHaYB2huawqtMWOsqtqspYHVFIux70LDjI/2I08ZkYZ5nLS3NP9AbWxrI+tdw6oLPs8Q/dv8CJzpmoAvj/w==",
"path": "fftsharp/1.1.6",
"hashPath": "fftsharp.1.1.6.nupkg.sha512"
},
"LibVLCSharp/3.8.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P61Pkc+2GgX9PGJmm0MTVYKh0zPbak25rkyb5MU8Vq7x/VgFV/0h3L2bP7H4Oz5sfmm03H8T010cqEKQVA4Jew==",
"path": "libvlcsharp/3.8.2",
"hashPath": "libvlcsharp.3.8.2.nupkg.sha512"
},
"LibVLCSharp.WinForms/3.8.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3wL7lthadR9MvpmSBTjY7WIlnwWRrFS2YpnFaaSnOzT3NZJngujlfuvfrf+1ge7uUE3CL/6Il6P4eN9fNNa0SA==",
"path": "libvlcsharp.winforms/3.8.2",
"hashPath": "libvlcsharp.winforms.3.8.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/3.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==",
"path": "microsoft.netcore.platforms/3.1.0",
"hashPath": "microsoft.netcore.platforms.3.1.0.nupkg.sha512"
},
"Microsoft.Win32.Registry/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==",
"path": "microsoft.win32.registry/4.7.0",
"hashPath": "microsoft.win32.registry.4.7.0.nupkg.sha512"
},
"NAudio/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c0DzwiyyklM0TP39Y7RObwO3QkWecgM6H60ikiEnsV/aEAJPbj5MFCLaD8BSfKuZe0HGuh9GRGWWlJmSxDc9MA==",
"path": "naudio/2.2.1",
"hashPath": "naudio.2.2.1.nupkg.sha512"
},
"NAudio.Asio/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-hQglyOT5iT3XuGpBP8ZG0+aoqwRfidHjTNehpoWwX0g6KJEgtH2VaqM2nuJ2mheKZa/IBqB4YQTZVvrIapzfOA==",
"path": "naudio.asio/2.2.1",
"hashPath": "naudio.asio.2.2.1.nupkg.sha512"
},
"NAudio.Core/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g==",
"path": "naudio.core/2.2.1",
"hashPath": "naudio.core.2.2.1.nupkg.sha512"
},
"NAudio.Midi/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6r23ylGo5aeP02WFXsPquz0T0hFJWyh+7t++tz19tc3Kr38NHm+Z9j+FiAv+xkH8tZqXJqus9Q8p6u7bidIgbw==",
"path": "naudio.midi/2.2.1",
"hashPath": "naudio.midi.2.2.1.nupkg.sha512"
},
"NAudio.Wasapi/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lFfXoqacZZe0WqNChJgGYI+XV/n/61LzPHT3C1CJp4khoxeo2sziyX5wzNYWeCMNbsWxFvT3b3iXeY1UYjBhZw==",
"path": "naudio.wasapi/2.2.1",
"hashPath": "naudio.wasapi.2.2.1.nupkg.sha512"
},
"NAudio.WinForms/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DlDkewY1myY0A+3NrYRJD+MZhZV0yy1mNF6dckB27IQ9XCs/My5Ip8BZcoSHOsaPSe2GAjvoaDnk6N9w8xTv7w==",
"path": "naudio.winforms/2.2.1",
"hashPath": "naudio.winforms.2.2.1.nupkg.sha512"
},
"NAudio.WinMM/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==",
"path": "naudio.winmm/2.2.1",
"hashPath": "naudio.winmm.2.2.1.nupkg.sha512"
},
"System.CodeDom/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==",
"path": "system.codedom/8.0.0",
"hashPath": "system.codedom.8.0.0.nupkg.sha512"
},
"System.Management/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==",
"path": "system.management/8.0.0",
"hashPath": "system.management.8.0.0.nupkg.sha512"
},
"System.Security.AccessControl/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==",
"path": "system.security.accesscontrol/4.7.0",
"hashPath": "system.security.accesscontrol.4.7.0.nupkg.sha512"
},
"System.Security.Principal.Windows/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==",
"path": "system.security.principal.windows/4.7.0",
"hashPath": "system.security.principal.windows.4.7.0.nupkg.sha512"
},
"VideoLAN.LibVLC.Windows/3.0.20": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ahujCn2kTPJSLEpwXu2BHIyv9Ke/iahd367hFwMMHSP9UkSOYC5QekOGFrSxKz22yZP67arcfCgNgDIcV31DpQ==",
"path": "videolan.libvlc.windows/3.0.20",
"hashPath": "videolan.libvlc.windows.3.0.20.nupkg.sha512"
},
"AudioWallpaper/1.2.1": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"LibAudioVisualizer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"LibDynamics/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View File

@@ -0,0 +1,15 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
{
"name": "Microsoft.WindowsDesktop.App",
"version": "6.0.0"
}
]
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,66 @@
[\\.\DISPLAY1_DEFAULTCONFIGURATION]
BACKIMGORNOT=TRUE
NUMBEROFCOLORS=256
SMOOTHSTRIPE=TRUE
DEFAULTOFFSET=0.4
ROTUNDITY=TRUE
ISSHOW=TRUE
STRIPESPACING=15
STRIPE=TRUE
BACKGROUNDIMAGEPATH=C:\USERS\ADMINISTRATOR\DOWNLOADS\2023092515484127868.JPG
USEDEFAULTCOLORORNOT=TRUE
DEFAULTRADICAL=2
APPLYWINDOWFUNC=BLACKMAN
DEFAULTSTOPCOLOR=SILVER
BACKGROUNDCOLOR=BLACK
FRAME=TRUE
AUTOSTOPWALLPAPER=FALSE
MONOCHROMEORNOT=FALSE
SETTINGFORSCREENNAME=\\.\DISPLAY1
WAVYLINE=FALSE
ISUSINGUNIFIEDCONFIGURATION=FALSE
SMOOTHROTUNDITY=TRUE
DEFAULTCOLOR=BLACK
ROTUNDITYSPACING=3
DEFAULTFOURIERVARIATION=512
[\\.\DISPLAY1_VIDEOWALLPAPERCONFIG]
VIDEORATE=10
ISSHOW=FALSE
VIDEOURL=C:\USERS\ADMINISTRATOR\VIDEOS\2023-09-25 14-37-02.MP4
AUTOSTOPWALLPAPER=FALSE
VIDEOVOLUME=100
[\\.\DISPLAY5_DEFAULTCONFIGURATION]
ISSHOW=TRUE
DEFAULTCOLOR=BLUE
MONOCHROMEORNOT=FALSE
STRIPESPACING=3
WAVYLINE=TRUE
APPLYWINDOWFUNC=BARTLETT
BACKGROUNDCOLOR=BLACK
AUTOSTOPWALLPAPER=FALSE
BACKGROUNDIMAGEPATH
BACKIMGORNOT=FALSE
DEFAULTRADICAL=2
STRIPE=TRUE
DEFAULTOFFSET=0.4
DEFAULTFOURIERVARIATION=512
ISUSINGUNIFIEDCONFIGURATION=FALSE
FRAME=TRUE
SMOOTHSTRIPE=TRUE
USEDEFAULTCOLORORNOT=TRUE
ROTUNDITYSPACING=3
NUMBEROFCOLORS=256
SMOOTHROTUNDITY=TRUE
DEFAULTSTOPCOLOR=RED
ROTUNDITY=TRUE
SETTINGFORSCREENNAME=\\.\DISPLAY5
[\\.\DISPLAY5_VIDEOWALLPAPERCONFIG]
ISSHOW=False
AUTOSTOPWALLPAPER=False
VIDEOURL=C:\USERS\ADMINISTRATOR\VIDEOS\《打黑》4K.MKV
VIDEORATE=10
VIDEOVOLUME=100

View File

@@ -0,0 +1,260 @@
root {
display: block;
}
body{
}
#mainContainer{
text-align: center;
width: 800px;
}
#controlContainer{
width: 800px;
}
#libraryContainer{
width: 800px;
margin-top: 2px;
}
#libraryTree{
height: 300px;
overflow: auto;
white-space: nowrap;
text-align: left;
}
#viewContainer{
width: 800px;
}
#mediaViewer{
min-height: 500px;
background-color:#222;
}
#player{
top:0px;
height: 500px;
width: 500px;
background-color:#222;
}
#seekSlider{
width: 98%;
margin-left:5px;
}
#volumeSlider{
width: 100px;
display: inline-block;
}
#currentVolume{
display: inline-block;
}
#mediaTitle{
position: absolute;
top: 0px;
left: 10px;
width: 600px;
text-align: center;
padding: 5px;
overflow: auto;
}
#currentTime{
margin-top:-40px;
float: left;
text-align: left;
}
#totalTime{
margin-top:-40px;
float: right;
text-align: right;
}
#controlTable{
position:relative;
height: 150px;
}
#controlButtons{
position: absolute;
top: 80px;
left: 10px;
padding: 0;
margin: 0;
text-align: left;
}
.buttonszone{
position:absolute;
width: 20px;
margin-left:-20px;
vertical-align:top;
padding:0px;
font-size:0px;
line-height:0px;
}
#buttonszone1 {
top: 200px;
}
#buttonszone2 {
top: 20px;
}
.buttonszone li{
float:left;
clear:left;
font-size:0px;
}
.buttonszone li span{
float:left
}
.buttonszone_active {
margin-top: 0px;
width: 120px;
margin-left:-122px;
font-size:10px;
line-height:16px;
}
.buttonszone_active li {
width:120px;
}
#volumesliderzone{
position: absolute;
top: 105px;
left: 410px;
width: 210px;
}
#volumeSlider{
width: 208px;
}
#libraryTree ul li a {
border:none;
}
#artszone{
position: absolute;
top: 0px;
right: 10px;
width: 150px;
height: 150px;
vertical-align: top;
}
#seekContainer{
position:absolute;
left: 5px;
top: 55px;
width: 79%;
vertical-align: bottom;
}
.button48{
width: 48px;
height: 48px;
margin: 5px 0px 5px 2px;
background: none;
border: none;
display: inline-block;
list-style: none;
float:left;
cursor: pointer;
background-image: url("../images/buttons.png");
background-repeat: no-repeat;
}
.button48:hover{
filter: alpha(opacity:0.5);
-ms-filter: "alpha(opacity=50)";
-khtml-opacity: 0.50;
-moz-opacity: 0.5;
filter: alpha(opacity=50);
opacity: 0.5;
}
.button{
cursor: pointer;
display: inline-block;
}
#buttonOpen{
background-position: 0px 0px;
}
#buttonStop{
background-position: -576px 0px;
}
.playing {
background-position: -336px 0px;
}
.paused {
background-position: -384px 0px;
}
#buttonPrev{
background-position: -144px 0px;
}
#buttonNext{
background-position: -288px 0px;
}
#buttonFull{
background-position: -192px 0px;
}
#buttonSout{
background-position: -624px 0px;
}
#buttonEQ{
background-position: -48px 0px;
}
#window_browse ol{
list-style-type: none;
}
#window_browse ol li{
list-style-type: none;
float: left;
padding: 5px;
}
.system_icon{
width:80px;
text-align:center;
vertical-align:top;
display: inline-block;
cursor: pointer;
padding: 2px;
border: 1px solid #823D0A;
margin: 2px;
height: 92px;
background-color: #E1E1E1;
overflow: hidden;
}
#window_create_stream table tr td{
font-size: 11px;
}
#window_equalizer div div{
text-align: center;
font-size: 11px;
padding: 0px;
}
#window_equalizer {
height:80px !important ;
}
.eqBand{
margin-bottom: 10px;
margin-top: 10px;
height: 400px;
font-size: 1.5em;
}
.footer{
margin-top: 30px;
text-align: center;
font-size: 11px;
}
div.centered{
margin-left: auto;
margin-right: auto;
}
.hidden{
visibility: hidden;
display: none;
}

Some files were not shown because too many files have changed in this diff Show More