mirror of
https://github.com/greenshot/greenshot
synced 2025-07-16 10:03:44 -07:00
Added an edge effect to see how and where we place them.
git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@1638 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
parent
034daa3957
commit
a52e83dc45
2 changed files with 102 additions and 2 deletions
|
@ -521,7 +521,20 @@ namespace Greenshot.Drawing {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ApplyBitmapEffect() {
|
||||||
|
Rectangle cropRectangle = new Rectangle(Point.Empty, Image.Size);
|
||||||
|
Bitmap tmpImage = ((Bitmap)Image).Clone(cropRectangle, Image.PixelFormat);
|
||||||
|
tmpImage.SetResolution(Image.HorizontalResolution, Image.VerticalResolution);
|
||||||
|
|
||||||
|
// Currently only one effect exists, others could follow
|
||||||
|
ImageHelper.ApplyTornEdge(tmpImage);
|
||||||
|
|
||||||
|
// Make undoable
|
||||||
|
MakeUndoable(new SurfaceCropMemento(this, cropRectangle), false);
|
||||||
|
SetImage(tmpImage, false);
|
||||||
|
}
|
||||||
|
|
||||||
public bool isCropPossible(ref Rectangle cropRectangle) {
|
public bool isCropPossible(ref Rectangle cropRectangle) {
|
||||||
cropRectangle = Helpers.GuiRectangle.GetGuiRectangle(cropRectangle.Left, cropRectangle.Top, cropRectangle.Width, cropRectangle.Height);
|
cropRectangle = Helpers.GuiRectangle.GetGuiRectangle(cropRectangle.Left, cropRectangle.Top, cropRectangle.Width, cropRectangle.Height);
|
||||||
if (cropRectangle.Left < 0) cropRectangle = new Rectangle(0, cropRectangle.Top, cropRectangle.Width + cropRectangle.Left, cropRectangle.Height);
|
if (cropRectangle.Left < 0) cropRectangle = new Rectangle(0, cropRectangle.Top, cropRectangle.Width + cropRectangle.Left, cropRectangle.Height);
|
||||||
|
@ -738,7 +751,7 @@ namespace Greenshot.Drawing {
|
||||||
selectedElements.OnDoubleClick();
|
selectedElements.OnDoubleClick();
|
||||||
selectedElements.Invalidate();
|
selectedElements.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Image GetImage(RenderMode renderMode) {
|
private Image GetImage(RenderMode renderMode) {
|
||||||
// Generate a copy of the original image with a dpi equal to the default...
|
// Generate a copy of the original image with a dpi equal to the default...
|
||||||
Bitmap clone = ImageHelper.CloneImageToBitmap(Image);
|
Bitmap clone = ImageHelper.CloneImageToBitmap(Image);
|
||||||
|
|
|
@ -297,5 +297,92 @@ namespace GreenshotPlugin.Core {
|
||||||
}
|
}
|
||||||
return returnIcon;
|
return returnIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Make the picture look like it's torn
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bitmap">Bitmap to modify</param>
|
||||||
|
public static void ApplyTornEdge(Bitmap bitmap) {
|
||||||
|
GraphicsPath path = new GraphicsPath();
|
||||||
|
Random random = new Random();
|
||||||
|
int regionWidth = 14;
|
||||||
|
int regionHeight = 14;
|
||||||
|
int HorizontalRegions = (int)(bitmap.Width / regionWidth);
|
||||||
|
int VerticalRegions = (int)(bitmap.Height / regionHeight);
|
||||||
|
int distance = 12;
|
||||||
|
|
||||||
|
// Start
|
||||||
|
Point previousEndingPoint = Point.Empty;
|
||||||
|
Point newEndingPoint = Point.Empty;
|
||||||
|
|
||||||
|
// Top
|
||||||
|
for (int i = 0; i < HorizontalRegions; i++) {
|
||||||
|
int x = (int)previousEndingPoint.X + regionWidth;
|
||||||
|
int y = random.Next(0, distance);
|
||||||
|
newEndingPoint = new Point(x, y);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
}
|
||||||
|
// end top
|
||||||
|
newEndingPoint = new Point(bitmap.Width, 0);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
path.CloseFigure();
|
||||||
|
|
||||||
|
// Right
|
||||||
|
for (int i = 0; i < VerticalRegions; i++) {
|
||||||
|
int x = bitmap.Width - random.Next(0, distance);
|
||||||
|
int y = (int)previousEndingPoint.Y + regionHeight;
|
||||||
|
newEndingPoint = new Point(x, y);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
}
|
||||||
|
// end right
|
||||||
|
newEndingPoint = new Point(bitmap.Width, bitmap.Height);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
path.CloseFigure();
|
||||||
|
|
||||||
|
// Bottom
|
||||||
|
for (int i = 0; i < HorizontalRegions; i++) {
|
||||||
|
int x = (int)previousEndingPoint.X - regionWidth;
|
||||||
|
int y = bitmap.Height - random.Next(0, distance);
|
||||||
|
newEndingPoint = new Point(x, y);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
}
|
||||||
|
// end Bottom
|
||||||
|
newEndingPoint = new Point(0, bitmap.Height);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
path.CloseFigure();
|
||||||
|
|
||||||
|
// Left
|
||||||
|
for (int i = 0; i < VerticalRegions; i++) {
|
||||||
|
int x = random.Next(0, distance);
|
||||||
|
int y = (int)previousEndingPoint.Y - regionHeight;
|
||||||
|
newEndingPoint = new Point(x, y);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
}
|
||||||
|
// end Left
|
||||||
|
newEndingPoint = new Point(0, 0);
|
||||||
|
path.AddLine(previousEndingPoint, newEndingPoint);
|
||||||
|
previousEndingPoint = newEndingPoint;
|
||||||
|
path.CloseFigure();
|
||||||
|
|
||||||
|
// Draw
|
||||||
|
using (Graphics graphics = Graphics.FromImage(bitmap)) {
|
||||||
|
Color fillColor = Color.White;
|
||||||
|
if (bitmap.PixelFormat == PixelFormat.Format32bppArgb) {
|
||||||
|
graphics.SetClip(path);
|
||||||
|
graphics.Clear(Color.Transparent);
|
||||||
|
} else {
|
||||||
|
using (Brush brush = new SolidBrush( Color.White)) {
|
||||||
|
graphics.FillPath(brush, path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue