diff --git a/ShareX.ScreenCaptureLib/Enums.cs b/ShareX.ScreenCaptureLib/Enums.cs index 10f6f4eb9..f2ebc355a 100644 --- a/ShareX.ScreenCaptureLib/Enums.cs +++ b/ShareX.ScreenCaptureLib/Enums.cs @@ -164,7 +164,9 @@ public enum ShapeType [Description("Drawing: Arrow")] DrawingArrow, [Description("Drawing: Blur")] - DrawingBlur + DrawingBlur, + [Description("Drawing: Pixelate")] + DrawingPixelate } public enum RegionAnnotateMode diff --git a/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs b/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs index 58278d827..757787f83 100644 --- a/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/AreaManager.cs @@ -696,6 +696,9 @@ public BaseShape CreateRegionShape(Rectangle rect) case ShapeType.DrawingBlur: shape = new BlurDrawingShape(); break; + case ShapeType.DrawingPixelate: + shape = new PixelateDrawingShape(); + break; } shape.Rectangle = rect; diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/PixelateDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/PixelateDrawingShape.cs new file mode 100644 index 000000000..b531632fe --- /dev/null +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/PixelateDrawingShape.cs @@ -0,0 +1,67 @@ +#region License Information (GPL v3) + +/* + ShareX - A program that allows you to take screenshots and share any file type + Copyright (c) 2007-2016 ShareX Team + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Optionally you can also view the license at . +*/ + +#endregion License Information (GPL v3) + +using ShareX.HelpersLib; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ShareX.ScreenCaptureLib +{ + public class PixelateDrawingShape : BaseDrawingShape + { + public override ShapeType ShapeType { get; } = ShapeType.DrawingBlur; + + public override void Draw(Graphics g) + { + using (Brush brush = new SolidBrush(Color.FromArgb(200, Color.Black))) + { + g.FillRectangle(brush, Rectangle); + } + + if (Rectangle.Width > 10 && Rectangle.Height > 10) + { + using (Font font = new Font("Verdana", 15, FontStyle.Bold)) + using (StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }) + { + g.DrawString("Pixelate", font, Brushes.White, Rectangle, sf); + } + } + } + + public override void DrawOutput(Graphics g, Bitmap bmp) + { + using (Bitmap croppedImage = ImageHelpers.CropBitmap(bmp, Rectangle)) + using (Bitmap pixelatedImage = ImageHelpers.Pixelate(croppedImage, 7)) + { + g.DrawImage(pixelatedImage, Rectangle); + } + } + } +} \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj b/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj index 557cae27f..09e3bf009 100644 --- a/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj +++ b/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj @@ -86,6 +86,7 @@ +