Beispiel #1
0
        private void Change_Display_Settings(object sender, EventArgs e)
        {
            Logger.Instance().Log("Yatse2", "Dispay settings changed");
            Topmost = _config.Topmost;
            WindowStartupLocation = WindowStartupLocation.Manual;
            Activate();
            var dx   = 1.0;
            var dy   = 1.0;
            var temp = PresentationSource.FromVisual(this);

            if (temp != null)
            {
                if (temp.CompositionTarget != null)
                {
                    var m = temp.CompositionTarget.TransformToDevice;
                    dx = m.M11;
                    dy = m.M22;
                }
            }
            var screens = System.Windows.Forms.Screen.AllScreens;


            if (screens.Length == 1 || !_config.SecondScreen)
            {
                if (_config.ForceResolution)
                {
                    var currentRes = ScreenResolution.GetDevmode(0, -1);
                    Logger.Instance().LogDump("CurrentResolutionMonoScreen", currentRes);
                    if (currentRes.DMPelsHeight != _config.Resolution.DMPelsHeight || currentRes.DMPelsWidth != _config.Resolution.DMPelsWidth || currentRes.DMBitsPerPel != _config.Resolution.DMBitsPerPel)
                    {
                        ScreenResolution.ChangeResolutionMode(0, _config.Resolution);
                        Logger.Instance().LogDump("ChangeResolutionMonoScreen", _config.Resolution);
                    }
                }
                Top  = 0;
                Left = 0;
            }
            else
            {
                if (_config.ForceResolution)
                {
                    var currentRes = ScreenResolution.GetDevmode(1, -1);
                    Logger.Instance().LogDump("CurrentResolutionMultiScreen", currentRes);
                    if (currentRes.DMPelsHeight != _config.Resolution.DMPelsHeight || currentRes.DMPelsWidth != _config.Resolution.DMPelsWidth || currentRes.DMBitsPerPel != _config.Resolution.DMBitsPerPel)
                    {
                        ScreenResolution.ChangeResolutionMode(1, _config.Resolution);
                        Logger.Instance().LogDump("ChangeResolutionMultiScreen", _config.Resolution);
                    }
                }
                screens = System.Windows.Forms.Screen.AllScreens;
                foreach (var scr in screens.Where(scr => !scr.Primary))
                {
                    Top  = scr.Bounds.Top / dy;
                    Left = scr.Bounds.Left / dx;
                    break;
                }
            }
            if (_config.Resolution.DMPelsWidth > 0)
            {
                Width  = _config.Resolution.DMPelsWidth / dx;
                Height = _config.Resolution.DMPelsHeight / dy;
            }

            if (_config.Resolution.DMPelsHeight == 480)
            {
                _config.Hack480       = true;
                brd_Home_Video.Margin = new Thickness(0, 0, 100, 180);
                brd_Home_Music.Margin = new Thickness(0, 70, 100, 0);
                brd_Home_Other.Margin = new Thickness(0, 320, 100, 0);
            }
            else
            {
                brd_Home_Video.Margin = new Thickness(0, 0, 100, 250);
                brd_Home_Music.Margin = new Thickness(0, 70, 100, 0);
                brd_Home_Other.Margin = new Thickness(0, 390, 100, 0);
            }

            _setPov = false;
        }