<<<<<<< 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 } /// /// 设置窗体加载事件 /// /// /// 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; } } /// /// 是否使用系统默认颜色 /// /// /// 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; } /// /// 获取当期窗体所在屏幕 /// private Screen GetThisWindowOnScreen() { return Screen.FromControl(this); } private void SetFrom_LocationChanged(object sender, EventArgs e) { //防抖,调用showsetdata函数 debounceTimer.Stop(); debounceTimer.Start(); } /// /// 防抖 /// /// /// 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; } } /// /// 统一更新控件状态 /// 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; } /// /// 是否使用第三方壁纸 /// /// /// private void UseOtherWallpaper_CheckedChanged(object sender, EventArgs e) { if (UseOtherWallpaper.Checked && checkBoxIsShow.Checked) { checkBoxIsShow.Checked = false; } } /// /// 视频 /// /// /// 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); } } /// /// 音量滑动条 /// /// /// private void trackBarVideoVolume_Scroll(object sender, EventArgs e) { VideoVolumeLabel.Text = trackBarVideoVolume.Value.ToString(); if (mediaPlayer != null) { mediaPlayer.Volume = trackBarVideoVolume.Value; } } /// /// 速率滑动条 /// /// /// 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(); } /// /// 其他配置保存按钮 /// /// /// 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 } }