mirror of
https://github.com/greenshot/greenshot
synced 2025-07-15 09:33:46 -07:00
Added key handling for the effects and added a clear operation. Also some code cleanup.
git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2360 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
parent
82eddefe4e
commit
e148f2103c
3 changed files with 70 additions and 38 deletions
|
@ -753,11 +753,17 @@ namespace Greenshot.Drawing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handle the drag/drop
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
private void OnDragDrop(object sender, DragEventArgs e) {
|
private void OnDragDrop(object sender, DragEventArgs e) {
|
||||||
List<string> filenames = GetFilenames(e);
|
List<string> filenames = GetFilenames(e);
|
||||||
Point mouse = this.PointToClient(new Point(e.X, e.Y));
|
Point mouse = this.PointToClient(new Point(e.X, e.Y));
|
||||||
if (e.Data.GetDataPresent("Text")) {
|
if (e.Data.GetDataPresent("Text")) {
|
||||||
string possibleUrl = (string)e.Data.GetData("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")) {
|
if (possibleUrl != null && possibleUrl.StartsWith("http")) {
|
||||||
using (Bitmap image = NetworkHelper.DownloadImage(possibleUrl)) {
|
using (Bitmap image = NetworkHelper.DownloadImage(possibleUrl)) {
|
||||||
if (image != null) {
|
if (image != null) {
|
||||||
|
@ -867,6 +873,21 @@ namespace Greenshot.Drawing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A simple clear
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="newColor">The color for the background</param>
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Apply a bitmap effect to the surface
|
/// Apply a bitmap effect to the surface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -501,7 +501,6 @@ namespace Greenshot {
|
||||||
refreshFieldControls();
|
refreshFieldControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BtnCropClick(object sender, EventArgs e) {
|
void BtnCropClick(object sender, EventArgs e) {
|
||||||
surface.DrawingMode = DrawingModes.Crop;
|
surface.DrawingMode = DrawingModes.Crop;
|
||||||
refreshFieldControls();
|
refreshFieldControls();
|
||||||
|
@ -749,19 +748,38 @@ namespace Greenshot {
|
||||||
case Keys.C:
|
case Keys.C:
|
||||||
BtnCropClick(sender, e);
|
BtnCropClick(sender, e);
|
||||||
break;
|
break;
|
||||||
case Keys.P:
|
|
||||||
//surface.PreviewMode = !surface.PreviewMode;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} else if (e.Modifiers.Equals(Keys.Control)) {
|
} else if (e.Modifiers.Equals(Keys.Control)) {
|
||||||
switch (e.KeyCode) {
|
switch (e.KeyCode) {
|
||||||
case Keys.Z:
|
case Keys.Z:
|
||||||
surface.Undo();
|
UndoToolStripMenuItemClick(sender, e);
|
||||||
updateUndoRedoSurfaceDependencies();
|
|
||||||
break;
|
break;
|
||||||
case Keys.Y:
|
case Keys.Y:
|
||||||
surface.Redo();
|
RedoToolStripMenuItemClick(sender, e);
|
||||||
updateUndoRedoSurfaceDependencies();
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1157,17 +1175,9 @@ namespace Greenshot {
|
||||||
this.Activate();
|
this.Activate();
|
||||||
WindowDetails.ToForeground(this.Handle);
|
WindowDetails.ToForeground(this.Handle);
|
||||||
if (capture!= null && capture.Image != null) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (capture!= null) {
|
if (capture!= null) {
|
||||||
capture.Dispose();
|
capture.Dispose();
|
||||||
|
@ -1183,45 +1193,42 @@ namespace Greenshot {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AddBorderToolStripMenuItemClick(object sender, EventArgs e) {
|
||||||
void AddBorderToolStripMenuItemClick(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
surface.ApplyBitmapEffect(Effects.Border);
|
surface.ApplyBitmapEffect(Effects.Border);
|
||||||
updateUndoRedoSurfaceDependencies();
|
updateUndoRedoSurfaceDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddDropshadowToolStripMenuItemClick(object sender, EventArgs e)
|
void AddDropshadowToolStripMenuItemClick(object sender, EventArgs e) {
|
||||||
{
|
|
||||||
surface.ApplyBitmapEffect(Effects.Shadow);
|
surface.ApplyBitmapEffect(Effects.Shadow);
|
||||||
updateUndoRedoSurfaceDependencies();
|
updateUndoRedoSurfaceDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TornEdgesToolStripMenuItemClick(object sender, EventArgs e)
|
void TornEdgesToolStripMenuItemClick(object sender, EventArgs e) {
|
||||||
{
|
|
||||||
surface.ApplyBitmapEffect(Effects.TornEdge);
|
surface.ApplyBitmapEffect(Effects.TornEdge);
|
||||||
updateUndoRedoSurfaceDependencies();
|
updateUndoRedoSurfaceDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GrayscaleToolStripMenuItemClick(object sender, EventArgs e)
|
void GrayscaleToolStripMenuItemClick(object sender, EventArgs e) {
|
||||||
{
|
|
||||||
surface.ApplyBitmapEffect(Effects.Grayscale);
|
surface.ApplyBitmapEffect(Effects.Grayscale);
|
||||||
updateUndoRedoSurfaceDependencies();
|
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);
|
surface.ApplyBitmapEffect(Effects.RotateClockwise);
|
||||||
updateUndoRedoSurfaceDependencies();
|
updateUndoRedoSurfaceDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RotateCcwToolstripButtonClick(object sender, EventArgs e)
|
void RotateCcwToolstripButtonClick(object sender, EventArgs e) {
|
||||||
{
|
|
||||||
surface.ApplyBitmapEffect(Effects.RotateCounterClockwise);
|
surface.ApplyBitmapEffect(Effects.RotateCounterClockwise);
|
||||||
updateUndoRedoSurfaceDependencies();
|
updateUndoRedoSurfaceDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InvertToolStripMenuItemClick(object sender, EventArgs e)
|
void InvertToolStripMenuItemClick(object sender, EventArgs e) {
|
||||||
{
|
|
||||||
surface.ApplyBitmapEffect(Effects.Invert);
|
surface.ApplyBitmapEffect(Effects.Invert);
|
||||||
updateUndoRedoSurfaceDependencies();
|
updateUndoRedoSurfaceDependencies();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1115,7 +1115,11 @@ namespace GreenshotPlugin.Core {
|
||||||
/// <param name="backgroundColor">The color to fill with, or Color.Empty to take the default depending on the pixel format</param>
|
/// <param name="backgroundColor">The color to fill with, or Color.Empty to take the default depending on the pixel format</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static Bitmap CreateEmptyLike(Bitmap sourceBitmap, Color backgroundColor) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue