예제 #1
0
        /// <summary>
        /// Draws overlay.
        /// </summary>
        public void Draw(IBitmapEditor 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(new SolidBrush(_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(new Pen(_settings.BorderColor, border), new RectangleF(x, y, d, d));
            }
        }
예제 #2
0
        public MainForm()
        {
            // Initializes controls edited with the WinForm designer (must be done BEFORE creating the BitmapEditor)
            InitializeComponent();

            // Instantiating BitmapEditor (must be done AFTER InitializeComponent() !!)
            IBitmapFileIO bitmapIO = new BitmapFileIO();

            editor = new BitmapEditor(bitmapIO, this);

            // Populates the comboboxes with a set of IBitmapFilter objects
            PrepareFilterComboboxes();
        }
예제 #3
0
        public void Draw(IBitmapEditor Editor, Func <Point, Point> PointTransform = null)
        {
            var img = GetImage();

            if (img == null)
            {
                return;
            }

            try
            {
                var targetSize = img.Size;

                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);

                var g = Editor.Graphics;

                if (_settings.Opacity < 100)
                {
                    var colormatrix = new ColorMatrix
                    {
                        Matrix33 = _settings.Opacity / 100.0f
                    };

                    var imgAttribute = new ImageAttributes();
                    imgAttribute.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

                    g.DrawImage(img, destRect, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, imgAttribute);
                }
                else
                {
                    g.DrawImage(img, destRect);
                }
            }
            catch { }
            finally
            {
                if (_disposeImages)
                {
                    img.Dispose();
                }
            }
        }
예제 #4
0
        public virtual void Draw(IBitmapEditor Editor, Func <Point, Point> PointTransform = null)
        {
            if (!_overlaySettings.Display)
            {
                return;
            }

            var text = GetText();

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

            var fontSize = _overlaySettings.FontSize;

            var font = new Font(FontFamily.GenericMonospace, fontSize);

            var size = Editor.MeasureString(text, font);

            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(new SolidBrush(_overlaySettings.BackgroundColor),
                                 rect,
                                 _overlaySettings.CornerRadius);

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

            var border = _overlaySettings.BorderThickness;

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

                Editor.DrawRectangle(new Pen(_overlaySettings.BorderColor, border),
                                     rect,
                                     _overlaySettings.CornerRadius);
            }
        }
예제 #5
0
        public void Draw(IBitmapEditor Editor, Func <Point, Point> PointTransform = null)
        {
            foreach (var overlaySetting in _overlaySettings)
            {
                if (!overlaySetting.Display)
                {
                    continue;
                }

                Editor.FillRectangle(new SolidBrush(Color.Black),
                                     new RectangleF(
                                         GetLeft(overlaySetting, Editor.Width),
                                         GetTop(overlaySetting, Editor.Height),
                                         overlaySetting.Width,
                                         overlaySetting.Height));
            }
        }