示例#1
0
        public CensorOverlayReactor(CensorOverlaySettings Settings)
        {
            Width = Settings
                    .ToReactivePropertyAsSynchronized(M => M.Width);

            Height = Settings
                     .ToReactivePropertyAsSynchronized(M => M.Height);

            Visible = Settings
                      .ObserveProperty(M => M.Display)
                      .Select(M => M ? Visibility.Visible : Visibility.Collapsed)
                      .ToReadOnlyReactivePropertySlim();
        }
示例#2
0
        private static float GetTop(CensorOverlaySettings overlaySettings, float fullHeight)
        {
            var y = overlaySettings.Y;

            switch (overlaySettings.VerticalAlignment)
            {
            case Alignment.Start:
                return(y);

            case Alignment.End:
                return(fullHeight - y - overlaySettings.Height);

            case Alignment.Center:
                return(fullHeight / 2 + y - overlaySettings.Height / 2f);

            default:
                return(0);
            }
        }
示例#3
0
        private static float GetLeft(CensorOverlaySettings overlaySettings, float fullWidth)
        {
            var x = overlaySettings.X;

            switch (overlaySettings.HorizontalAlignment)
            {
            case Alignment.Start:
                return(x);

            case Alignment.End:
                return(fullWidth - x - overlaySettings.Width);

            case Alignment.Center:
                return(fullWidth / 2 + x - overlaySettings.Width / 2f);

            default:
                return(0);
            }
        }
示例#4
0
        private Controls.LayerFrame Censor(CensorOverlaySettings settings)
        {
            var control = Generate(settings, "Censored", Colors.Black);

            control.Width  = settings.Width;
            control.Height = settings.Height;

            settings.PropertyChanged += (s, e) =>
            {
                Dispatcher.Invoke(() =>
                {
                    control.Width  = settings.Width;
                    control.Height = settings.Height;
                });
            };

            control.PositionUpdated += rect =>
            {
                settings.Width  = (int)rect.Width;
                settings.Height = (int)rect.Height;
            };

            return(control);
        }