コード例 #1
0
ファイル: MouseKeyOverlay.cs プロジェクト: zmyxpt/Captura
        /// <summary>
        /// Draws overlay.
        /// </summary>
        public void Draw(IEditableFrame Editor, Func <Point, Point> Transform = null)
        {
            _mouseClickOverlay?.Draw(Editor, Transform);
            _scrollOverlay?.Draw(Editor, Transform);

            _keyOverlay?.Draw(Editor, Transform);
        }
コード例 #2
0
        static void DrawKeys(KeystrokesSettings KeystrokesSettings, IEditableFrame Editor, string Text, IFont Font, byte Opacity, float OffsetY)
        {
            var size = Editor.MeasureString(Text, Font);

            int paddingX = KeystrokesSettings.HorizontalPadding, paddingY = KeystrokesSettings.VerticalPadding;

            var rect = new RectangleF(GetLeft(KeystrokesSettings, Editor.Width, size.Width),
                                      GetTop(KeystrokesSettings, Editor.Height, size.Height, OffsetY),
                                      size.Width + 2 * paddingX,
                                      size.Height + 2 * paddingY);

            Editor.FillRectangle(Color.FromArgb(Opacity, KeystrokesSettings.BackgroundColor),
                                 rect,
                                 KeystrokesSettings.CornerRadius);

            Editor.DrawString(Text,
                              Font,
                              Color.FromArgb(Opacity, KeystrokesSettings.FontColor),
                              new RectangleF(rect.Left + paddingX, rect.Top + paddingY, size.Width, size.Height));

            var border = KeystrokesSettings.BorderThickness;

            if (border > 0)
            {
                rect = new RectangleF(rect.Left - border / 2f, rect.Top - border / 2f, rect.Width + border, rect.Height + border);

                Editor.DrawRectangle(Color.FromArgb(Opacity, KeystrokesSettings.BorderColor), border,
                                     rect,
                                     KeystrokesSettings.CornerRadius);
            }
        }
コード例 #3
0
ファイル: ScrollOverlay.cs プロジェクト: zmyxpt/Captura
        public void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            if (!_settings.DisplayScroll)
            {
                return;
            }

            if (_lastArgs is { } args)
            {
                var p = args.Location;
                var r = _settings.Radius;
                var d = 2 * r;

                Editor.FillEllipse(_settings.ScrollCircleColor, new RectangleF(p.X - r, p.Y - r, d, d));

                var above = new Point(p.X, p.Y + r / 2);
                var below = new Point(p.X, p.Y - r / 2);

                // Scroll down
                if (args.Delta < 0)
                {
                    (above, below) = (below, above);
                }

                Editor.DrawArrow(above, below, _settings.ScrollArrowColor, r / 4f);

                _lastArgs = null;
            }
        }
コード例 #4
0
ファイル: MousePointerOverlay.cs プロジェクト: vebin/Captura
        /// <summary>
        /// Draws overlay.
        /// </summary>
        public void Draw(IEditableFrame Editor, Func <Point, Point> Transform = null)
        {
            if (!_settings.Display)
            {
                return;
            }

            var clickRadius = _settings.Radius;

            var curPos = MouseCursor.CursorPosition;

            if (Transform != null)
            {
                curPos = Transform(curPos);
            }

            var d = clickRadius * 2;

            var x = curPos.X - clickRadius;
            var y = curPos.Y - clickRadius;

            Editor.FillEllipse(_settings.Color, new RectangleF(x, y, d, d));

            var border = _settings.BorderThickness;

            if (border > 0)
            {
                x -= border / 2;
                y -= border / 2;
                d += border;

                Editor.DrawEllipse(_settings.BorderColor, border, new RectangleF(x, y, d, d));
            }
        }
コード例 #5
0
        public void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            var img = GetImage(Editor);

            if (img == null)
            {
                return;
            }

            var targetSize = new Size(img.Width, img.Height);

            try
            {
                if (Settings.Resize)
                {
                    targetSize = new Size(Settings.ResizeWidth, Settings.ResizeHeight);
                }

                var point    = GetPosition(new Size((int)Editor.Width, (int)Editor.Height), targetSize);
                var destRect = new Rectangle(point, targetSize);

                Editor.DrawImage(img, destRect, Settings.Opacity);
            }
            catch { }
            finally
            {
                if (_disposeImages)
                {
                    img.Dispose();
                }
            }
        }
コード例 #6
0
ファイル: ImageOverlay.cs プロジェクト: epicwebgame/screen
        protected void Draw(IEditableFrame Editor, IBitmapImage Image, PointF Position, SizeF?Size, int Opacity)
        {
            if (Image == null)
            {
                return;
            }

            var targetSize = Size ?? new Size(Image.Width, Image.Height);

            try
            {
                //var point = GetPosition(new Size((int)Editor.Width, (int)Editor.Height), targetSize);
                var destRect = new RectangleF(Position, targetSize);

                Editor.DrawImage(Image, destRect, Opacity);
            }
            catch { }
            finally
            {
                if (_disposeImages)
                {
                    Image.Dispose();
                }
            }
        }
コード例 #7
0
        public void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform)
        {
            var repeat = (_repeat == 0 ? "" : $" x {_repeat + 1}");

            var text = $"{Text}{repeat}";

            DrawString(Editor, text, _settings);
        }
コード例 #8
0
ファイル: WebcamOverlay.cs プロジェクト: zz110/Captura
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            var pos = _settings.GetPosition(Editor.Width, Editor.Height);
            var w   = _settings.GetWidth(Editor.Width);
            var h   = _settings.GetHeight(Editor.Height);

            Draw(Editor, GetImage(Editor), pos, new SizeF(w, h), _settings.Opacity);
        }
コード例 #9
0
ファイル: WebcamOverlay.cs プロジェクト: zxzAndyMAC/Captura
        protected override IBitmapImage GetImage(IEditableFrame Editor)
        {
            // No Webcam
            if (_webcamModel.AvailableCams.Count < 1 || _webcamModel.SelectedCam is NoWebcamItem)
            {
                return(null);
            }

            return(_webcamModel.WebcamCapture?.Capture(Editor));
        }
コード例 #10
0
        protected override IBitmapImage GetImage(IEditableFrame Editor)
        {
            // No Webcam
            if (_webCamProvider.AvailableCams.Count < 1 || _webCamProvider.SelectedCam == _webCamProvider.AvailableCams[0])
            {
                return(null);
            }

            return(_webCamProvider.Capture(Editor));
        }
コード例 #11
0
ファイル: CustomImageOverlay.cs プロジェクト: vebin/Captura
        protected override IDisposable GetImage(IEditableFrame Editor, out Size Size)
        {
            if (_bmp == null)
            {
                _bmp = Editor.LoadBitmap(Settings.Source, out _size);
            }

            Size = _size;

            return(_bmp);
        }
コード例 #12
0
        protected override IDisposable GetImage(IEditableFrame Editor, out Size Size)
        {
            Size = new Size(_webCamProvider.Width, _webCamProvider.Height);

            // No Webcam
            if (_webCamProvider.AvailableCams.Count < 1 || _webCamProvider.SelectedCam == _webCamProvider.AvailableCams[0])
            {
                return(null);
            }

            return(_webCamProvider.Capture(Editor));
        }
コード例 #13
0
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform)
        {
            var start = StartPoint;
            var end   = EndPoint;

            if (PointTransform != null)
            {
                start = PointTransform(start);
                end   = PointTransform(end);
            }

            Editor.DrawArrow(start, end, _settings.Color, _settings.Radius);

            base.Draw(Editor, PointTransform);
        }
コード例 #14
0
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            var img = GetImage(Editor);

            var size = new Size(img.Width, img.Height);

            if (_settings.Resize)
            {
                size = new Size(_settings.ResizeWidth, _settings.ResizeHeight);
            }

            var pos = GetPosition(new SizeF(Editor.Width, Editor.Height), size);

            Draw(Editor, img, pos, size, _settings.Opacity);
        }
コード例 #15
0
        public static void Draw(IEditableFrame G, Func <Point, Point> Transform = null)
        {
            GetIcon(Transform, out var icon, out var location);

            if (icon == null)
            {
                return;
            }

            try
            {
                G.DrawImage(new DrawingImage(icon), new Rectangle(location, icon.Size));
            }
            catch (ArgumentException) { }
        }
コード例 #16
0
ファイル: TextOverlay.cs プロジェクト: Lakritzator/Captura
        public virtual void Draw(IEditableFrame editor, Func <Point, Point> pointTransform = null)
        {
            if (!_overlaySettings.Display)
            {
                return;
            }

            var text = GetText();

            if (string.IsNullOrWhiteSpace(text))
            {
                return;
            }

            var fontSize = _overlaySettings.FontSize;

            var size = editor.MeasureString(text, fontSize);

            int paddingX = _overlaySettings.HorizontalPadding, paddingY = _overlaySettings.VerticalPadding;

            var rect = new RectangleF(GetLeft(_overlaySettings, editor.Width, size.Width),
                                      GetTop(_overlaySettings, editor.Height, size.Height),
                                      size.Width + 2 * paddingX,
                                      size.Height + 2 * paddingY);

            editor.FillRectangle(_overlaySettings.BackgroundColor,
                                 rect,
                                 _overlaySettings.CornerRadius);

            editor.DrawString(text,
                              fontSize,
                              _overlaySettings.FontColor,
                              new RectangleF(rect.Left + paddingX, rect.Top + paddingY, size.Width, size.Height));

            var border = _overlaySettings.BorderThickness;

            if (border <= 0)
            {
                return;
            }

            rect = new RectangleF(rect.Left - border / 2f, rect.Top - border / 2f, rect.Width + border, rect.Height + border);

            editor.DrawRectangle(_overlaySettings.BorderColor, border,
                                 rect,
                                 _overlaySettings.CornerRadius);
        }
コード例 #17
0
ファイル: CensorOverlay.cs プロジェクト: epicwebgame/screen
        public void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            foreach (var overlaySetting in _overlaySettings)
            {
                if (!overlaySetting.Display)
                {
                    continue;
                }

                Editor.FillRectangle(Color.Black,
                                     new RectangleF(
                                         GetLeft(overlaySetting, Editor.Width),
                                         GetTop(overlaySetting, Editor.Height),
                                         overlaySetting.Width,
                                         overlaySetting.Height));
            }
        }
コード例 #18
0
        public void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            if (!_settings.Display)
            {
                return;
            }

            if (_records?.Last == null)
            {
                return;
            }

            var  offsetY  = 0f;
            var  fontSize = _settings.FontSize;
            byte opacity  = 255;

            var index = 0;

            foreach (var keyRecord in _records)
            {
                ++index;

                if ((DateTime.Now - keyRecord.TimeStamp).TotalSeconds > _records.Size * _settings.Timeout)
                {
                    continue;
                }

                using (var font = Editor.GetFont(_settings.FontFamily, Math.Max(1, fontSize)))
                {
                    DrawKeys(_settings, Editor, keyRecord.Display, font, opacity, offsetY);

                    var height = Editor.MeasureString("A", font).Height;

                    offsetY += height + _settings.HistorySpacing;

                    offsetY += _settings.VerticalPadding * 2 + _settings.BorderThickness * 2;
                }

                if (index == 1)
                {
                    fontSize -= 5;
                    opacity   = 200;
                }
            }
        }
コード例 #19
0
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            var curPos = Args.Location;

            if (PointTransform != null)
            {
                curPos = PointTransform(curPos);
            }

            float clickRadius = _settings.Radius;

            var d = clickRadius * 2;

            var x = curPos.X - clickRadius;
            var y = curPos.Y - clickRadius;

            var color = GetClickCircleColor();

            Editor.FillEllipse(color, new RectangleF(x, y, d, d));

            var border = _settings.BorderThickness;

            if (border > 0)
            {
                x -= border / 2f;
                y -= border / 2f;
                d += border;

                var borderColor = _settings.BorderColor;

                Editor.DrawEllipse(borderColor, border, new RectangleF(x, y, d, d));
            }

            if (Args.Clicks > 1)
            {
                var font = Editor.GetFont("Arial", 15);
                Editor.DrawString(Args.Clicks.ToString(), font, Color.Black, new RectangleF(x + 10, y + 10, d, d));
            }

            base.Draw(Editor, PointTransform);
        }
コード例 #20
0
ファイル: KeyStep.cs プロジェクト: evincee/Captura
        public static void DrawString(IEditableFrame Editor, string Text, KeystrokesSettings Settings)
        {
            if (string.IsNullOrWhiteSpace(Text))
            {
                return;
            }

            using (var font = Editor.GetFont(Settings.FontFamily, Settings.FontSize))
            {
                var size = Editor.MeasureString(Text, font);

                int paddingX = Settings.HorizontalPadding,
                    paddingY = Settings.VerticalPadding;

                var rect = new RectangleF(KeyOverlay.GetLeft(Settings, Editor.Width, size.Width),
                                          KeyOverlay.GetTop(Settings, Editor.Height, size.Height),
                                          size.Width + 2 * paddingX,
                                          size.Height + 2 * paddingY);

                Editor.FillRectangle(Settings.BackgroundColor,
                                     rect,
                                     Settings.CornerRadius);

                Editor.DrawString(Text,
                                  font,
                                  Settings.FontColor,
                                  new RectangleF(rect.Left + paddingX, rect.Top + paddingY, size.Width, size.Height));

                var border = Settings.BorderThickness;

                if (border > 0)
                {
                    rect = new RectangleF(rect.Left - border / 2f, rect.Top - border / 2f, rect.Width + border, rect.Height + border);

                    Editor.DrawRectangle(Settings.BorderColor,
                                         border,
                                         rect,
                                         Settings.CornerRadius);
                }
            }
        }
コード例 #21
0
ファイル: ScrollStep.cs プロジェクト: zmyxpt/Captura
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform)
        {
            var p = Args.Location;

            var r = _settings.Radius;
            var d = 2 * r;

            Editor.FillEllipse(_settings.Color, new RectangleF(p.X - r, p.Y - r, d, d));

            var above = new Point(p.X, p.Y + r / 2);
            var below = new Point(p.X, p.Y - r / 2);

            if (Args.Delta < 0)
            {
                (above, below) = (below, above);
            }

            Editor.DrawArrow(above, below, _settings.BorderColor, r / 4f);

            base.Draw(Editor, PointTransform);
        }
コード例 #22
0
ファイル: WebcamOverlay.cs プロジェクト: zizhang2/Captura
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            // No Webcam
            if (_webcamModel.AvailableCams.Count < 1 || _webcamModel.SelectedCam is NoWebcamItem)
            {
                return;
            }

            var cap = _webcamModel.WebcamCapture;

            if (cap == null)
            {
                return;
            }

            var pos = _settings.GetPosition(Editor.Width, Editor.Height);
            var w   = _settings.GetWidth(Editor.Width);
            var h   = _settings.GetHeight(Editor.Height);

            var imgWbyH = cap.Width / cap.Height;

            var frameWbyH = w / h;

            if (imgWbyH > frameWbyH)
            {
                var newH = w / imgWbyH;

                pos.Y += (h - newH) / 2;
                h      = newH;
            }
            else
            {
                var newW = h * imgWbyH;

                pos.X += (w - newW) / 2;
                w      = newW;
            }

            Draw(Editor, GetImage(Editor), pos, new SizeF(w, h), _settings.Opacity);
        }
コード例 #23
0
        public override void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            // No Webcam
            if (_webcamModel.AvailableCams.Count < 1 || _webcamModel.SelectedCam is NoWebcamItem)
            {
                return;
            }

            var cap = _webcamCapture.Value;

            if (cap == null)
            {
                return;
            }

            var frameSize  = new Size((int)Editor.Width, (int)Editor.Height);
            var webcamSize = new Size(cap.Width, cap.Height);

            var pos  = _settings.GetPosition(frameSize, webcamSize);
            var size = _settings.GetSize(frameSize, webcamSize);

            Draw(Editor, GetImage(Editor), pos, size, _settings.Opacity);
        }
コード例 #24
0
 IBitmapImage GetImage(IEditableFrame Editor)
 {
     return(_bmp ??= Editor.LoadBitmap(_settings.Source));
 }
コード例 #25
0
ファイル: ImageOverlay.cs プロジェクト: epicwebgame/screen
 public abstract void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null);
コード例 #26
0
ファイル: KeyModifiedStep.cs プロジェクト: zizhang2/Captura
 public virtual void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform)
 {
     KeyStep.DrawString(Editor, _modifierStates.ToString(_keymap), _keystrokesSettings);
 }
コード例 #27
0
ファイル: WebcamOverlay.cs プロジェクト: zizhang2/Captura
 IBitmapImage GetImage(IEditableFrame Editor)
 {
     return(_webcamModel.WebcamCapture?.Capture(Editor));
 }
コード例 #28
0
 protected abstract IBitmapImage GetImage(IEditableFrame Editor);
コード例 #29
0
ファイル: ImageOverlay.cs プロジェクト: vebin/Captura
 protected abstract IDisposable GetImage(IEditableFrame Editor, out Size Size);
コード例 #30
0
        public void Draw(IEditableFrame Editor, Func <Point, Point> PointTransform = null)
        {
            if (!_settings.Display)
            {
                return;
            }

            if (_clicked && _currentMouseRatio < MouseRatioMax)
            {
                _currentMouseRatio += MouseRatioDeltaUp;

                if (_currentMouseRatio > MouseRatioMax)
                {
                    _currentMouseRatio = MouseRatioMax;
                }
            }
            else if (!_clicked && _currentMouseRatio > MouseRatioMin)
            {
                _currentMouseRatio -= MouseRatioDeltaDown;

                if (_currentMouseRatio < MouseRatioMin)
                {
                    _currentMouseRatio = MouseRatioMin;
                }
            }

            if (_currentMouseRatio > MouseRatioMin)
            {
                var clickRadius = _settings.Radius * _currentMouseRatio;

                var platformServices = ServiceProvider.Get <IPlatformServices>();

                var curPos = platformServices.CursorPosition;

                if (PointTransform != null)
                {
                    curPos = PointTransform(curPos);
                }

                var d = clickRadius * 2;

                var x = curPos.X - clickRadius;
                var y = curPos.Y - clickRadius;

                var color = GetClickCircleColor();

                color = Color.FromArgb(ToByte(color.A * _currentMouseRatio), color);

                Editor.FillEllipse(color, new RectangleF(x, y, d, d));

                var border = _settings.BorderThickness * _currentMouseRatio;

                if (border > 0)
                {
                    x -= border / 2f;
                    y -= border / 2f;
                    d += border;

                    var borderColor = _settings.BorderColor;

                    borderColor = Color.FromArgb(ToByte(borderColor.A * _currentMouseRatio), borderColor);

                    Editor.DrawEllipse(borderColor, border, new RectangleF(x, y, d, d));
                }
            }
        }