diff --git a/Greenshot/Drawing/Surface.cs b/Greenshot/Drawing/Surface.cs
index 49584b054..0d361d865 100644
--- a/Greenshot/Drawing/Surface.cs
+++ b/Greenshot/Drawing/Surface.cs
@@ -753,11 +753,17 @@ namespace Greenshot.Drawing {
}
}
+ ///
+ /// Handle the drag/drop
+ ///
+ ///
+ ///
private void OnDragDrop(object sender, DragEventArgs e) {
List filenames = GetFilenames(e);
Point mouse = this.PointToClient(new Point(e.X, e.Y));
if (e.Data.GetDataPresent("Text")) {
string possibleUrl = (string)e.Data.GetData("Text");
+ // Test if it's an url and try to download the image so we have it in the original form
if (possibleUrl != null && possibleUrl.StartsWith("http")) {
using (Bitmap image = NetworkHelper.DownloadImage(possibleUrl)) {
if (image != null) {
@@ -867,6 +873,21 @@ namespace Greenshot.Drawing {
}
}
+ ///
+ /// A simple clear
+ ///
+ /// The color for the background
+ public void Clear(Color newColor) {
+ //create a blank bitmap the same size as original
+ Bitmap newBitmap = ImageHelper.CreateEmptyLike((Bitmap)Image, Color.Empty);
+ if (newBitmap != null) {
+ // Make undoable
+ MakeUndoable(new SurfaceBackgroundChangeMemento(this, Point.Empty), false);
+ SetImage(newBitmap, false);
+ Invalidate();
+ }
+ }
+
///
/// Apply a bitmap effect to the surface
///
diff --git a/Greenshot/Forms/ImageEditorForm.cs b/Greenshot/Forms/ImageEditorForm.cs
index 1b76bea26..79416cc81 100644
--- a/Greenshot/Forms/ImageEditorForm.cs
+++ b/Greenshot/Forms/ImageEditorForm.cs
@@ -501,7 +501,6 @@ namespace Greenshot {
refreshFieldControls();
}
-
void BtnCropClick(object sender, EventArgs e) {
surface.DrawingMode = DrawingModes.Crop;
refreshFieldControls();
@@ -749,19 +748,38 @@ namespace Greenshot {
case Keys.C:
BtnCropClick(sender, e);
break;
- case Keys.P:
- //surface.PreviewMode = !surface.PreviewMode;
- break;
}
} else if (e.Modifiers.Equals(Keys.Control)) {
switch (e.KeyCode) {
case Keys.Z:
- surface.Undo();
- updateUndoRedoSurfaceDependencies();
+ UndoToolStripMenuItemClick(sender, e);
break;
case Keys.Y:
- surface.Redo();
- updateUndoRedoSurfaceDependencies();
+ RedoToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.Q: // Dropshadow Ctrl + Q
+ AddDropshadowToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.B: // Border Ctrl + B
+ AddBorderToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.T: // Torn edge Ctrl + T
+ TornEdgesToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.I: // Invert Ctrl + I
+ InvertToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.G: // Grayscale Ctrl + G
+ GrayscaleToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.Delete: // Grayscale Ctrl + Delete
+ ClearToolStripMenuItemClick(sender, e);
+ break;
+ case Keys.Oemcomma: // Rotate CCW Ctrl + ,
+ RotateCcwToolstripButtonClick(sender, e);
+ break;
+ case Keys.OemPeriod: // Rotate CW Ctrl + .
+ RotateCwToolstripButtonClick(sender, e);
break;
}
}
@@ -1157,15 +1175,7 @@ namespace Greenshot {
this.Activate();
WindowDetails.ToForeground(this.Handle);
if (capture!= null && capture.Image != null) {
- bool addShadow = false;
- if (addShadow) {
- Point offset = new Point(-1,-1);
- using (Bitmap shadowImage = ImageHelper.CreateShadow(capture.Image, 1f, 7, ref offset, PixelFormat.Format32bppArgb)) {
- surface.AddBitmapContainer(shadowImage, 100, 100);
- }
- } else {
- surface.AddBitmapContainer((Bitmap)capture.Image, 100, 100);
- }
+ surface.AddBitmapContainer((Bitmap)capture.Image, 100, 100);
}
}
@@ -1176,52 +1186,49 @@ namespace Greenshot {
LOG.Error(exception);
}
}
-
+
void AutoCropToolStripMenuItemClick(object sender, EventArgs e) {
if (surface.AutoCrop()) {
refreshFieldControls();
}
}
-
- void AddBorderToolStripMenuItemClick(object sender, EventArgs e)
- {
+ void AddBorderToolStripMenuItemClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.Border);
updateUndoRedoSurfaceDependencies();
}
-
- void AddDropshadowToolStripMenuItemClick(object sender, EventArgs e)
- {
+
+ void AddDropshadowToolStripMenuItemClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.Shadow);
updateUndoRedoSurfaceDependencies();
}
-
- void TornEdgesToolStripMenuItemClick(object sender, EventArgs e)
- {
+
+ void TornEdgesToolStripMenuItemClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.TornEdge);
updateUndoRedoSurfaceDependencies();
}
-
- void GrayscaleToolStripMenuItemClick(object sender, EventArgs e)
- {
+
+ void GrayscaleToolStripMenuItemClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.Grayscale);
updateUndoRedoSurfaceDependencies();
}
-
- void RotateCwToolstripButtonClick(object sender, EventArgs e)
- {
+
+ void ClearToolStripMenuItemClick(object sender, EventArgs e) {
+ surface.Clear(Color.Transparent);
+ updateUndoRedoSurfaceDependencies();
+ }
+
+ void RotateCwToolstripButtonClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.RotateClockwise);
updateUndoRedoSurfaceDependencies();
}
- void RotateCcwToolstripButtonClick(object sender, EventArgs e)
- {
+ void RotateCcwToolstripButtonClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.RotateCounterClockwise);
updateUndoRedoSurfaceDependencies();
}
- void InvertToolStripMenuItemClick(object sender, EventArgs e)
- {
+ void InvertToolStripMenuItemClick(object sender, EventArgs e) {
surface.ApplyBitmapEffect(Effects.Invert);
updateUndoRedoSurfaceDependencies();
}
diff --git a/GreenshotPlugin/Core/ImageHelper.cs b/GreenshotPlugin/Core/ImageHelper.cs
index 08466b402..9f1e0c63e 100644
--- a/GreenshotPlugin/Core/ImageHelper.cs
+++ b/GreenshotPlugin/Core/ImageHelper.cs
@@ -1115,7 +1115,11 @@ namespace GreenshotPlugin.Core {
/// The color to fill with, or Color.Empty to take the default depending on the pixel format
///
public static Bitmap CreateEmptyLike(Bitmap sourceBitmap, Color backgroundColor) {
- return CreateEmpty(sourceBitmap.Width, sourceBitmap.Height, sourceBitmap.PixelFormat, backgroundColor, sourceBitmap.HorizontalResolution, sourceBitmap.VerticalResolution);
+ PixelFormat pixelFormat = sourceBitmap.PixelFormat;
+ if (backgroundColor.A < 255) {
+ pixelFormat = PixelFormat.Format32bppArgb;
+ }
+ return CreateEmpty(sourceBitmap.Width, sourceBitmap.Height, pixelFormat, backgroundColor, sourceBitmap.HorizontalResolution, sourceBitmap.VerticalResolution);
}
///