Custom drag & drop form background

This commit is contained in:
Jaex 2014-07-05 20:46:37 +03:00
parent b5ceb563f8
commit 523f6ddbbb
4 changed files with 113 additions and 83 deletions

View file

@ -433,5 +433,10 @@ public static void Check(this ToolStripMenuItem tsmi)
}
}
}
public static Version Normalize(this Version version)
{
return new Version(Math.Max(version.Major, 0), Math.Max(version.Minor, 0), Math.Max(version.Build, 0), Math.Max(version.Revision, 0));
}
}
}

View file

@ -355,22 +355,17 @@ public static int CompareApplicationVersion(string version)
return CompareVersion(version, Application.ProductVersion);
}
private static Version NormalizeVersion(string version)
{
return Version.Parse(version).Normalize();
}
/// <summary>
/// If latestVersion newer than currentVersion = true
/// </summary>
public static bool CheckVersion(Version currentVersion, Version latestVersion)
{
return NormalizeVersion(latestVersion).CompareTo(NormalizeVersion(currentVersion)) > 0;
}
private static Version NormalizeVersion(Version version)
{
return new Version(Math.Max(version.Major, 0), Math.Max(version.Minor, 0), Math.Max(version.Build, 0), Math.Max(version.Revision, 0));
}
private static Version NormalizeVersion(string version)
{
return NormalizeVersion(Version.Parse(version));
return currentVersion.Normalize() < latestVersion.Normalize();
}
public static bool IsWindowsXP()

View file

@ -26,6 +26,7 @@ You should have received a copy of the GNU General Public License
using HelpersLib;
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace ShareX
@ -50,7 +51,7 @@ public static DropForm GetInstance(int size, int offset, ContentAlignment alignm
public int DropOpacity { get; set; }
public int DropHoverOpacity { get; set; }
private Bitmap logo = null;
private Bitmap backgroundImage = null;
private bool isHovered = false;
private DropForm(int size, int offset, ContentAlignment alignment, int opacity, int hoverOpacity)
@ -62,12 +63,41 @@ private DropForm(int size, int offset, ContentAlignment alignment, int opacity,
DropOpacity = opacity.Between(1, 255);
DropHoverOpacity = hoverOpacity.Between(1, 255);
logo = (Bitmap)ImageHelpers.ResizeImage(ShareXResources.Logo, DropSize, DropSize);
backgroundImage = DrawDropImage(size);
Point position = Helpers.GetPosition(DropAlignment, new Point(DropOffset, DropOffset), Screen.PrimaryScreen.WorkingArea.Size, logo.Size);
Point position = Helpers.GetPosition(DropAlignment, new Point(DropOffset, DropOffset), Screen.PrimaryScreen.WorkingArea.Size, backgroundImage.Size);
Location = position;
SelectBitmap(logo, DropOpacity);
SelectBitmap(backgroundImage, DropOpacity);
}
private Bitmap DrawDropImage(int size)
{
Bitmap bmp = new Bitmap(size, size);
Rectangle rect = new Rectangle(0, 0, size, size);
using (Graphics g = Graphics.FromImage(bmp))
{
g.FillRectangle(Brushes.CornflowerBlue, rect);
g.DrawRectangleProper(Pens.Black, rect);
using (Pen pen = new Pen(Color.WhiteSmoke, 5) { Alignment = PenAlignment.Inset })
{
g.DrawRectangleProper(pen, rect.RectangleOffset(-1));
}
string text = "Drag\n&\nDrop";
StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
using (Font font = new Font("Arial", 20, FontStyle.Bold))
{
g.DrawString(text, font, Brushes.Black, rect.LocationOffset(1), sf);
g.DrawString(text, font, Brushes.White, rect, sf);
}
}
return bmp;
}
private void DropForm_MouseDown(object sender, MouseEventArgs e)
@ -97,7 +127,7 @@ private void DropForm_DragEnter(object sender, DragEventArgs e)
if (!isHovered)
{
SelectBitmap(logo, DropHoverOpacity);
SelectBitmap(backgroundImage, DropHoverOpacity);
isHovered = true;
}
}
@ -113,7 +143,7 @@ private void DropForm_DragDrop(object sender, DragEventArgs e)
if (isHovered)
{
SelectBitmap(logo, DropOpacity);
SelectBitmap(backgroundImage, DropOpacity);
isHovered = false;
}
}
@ -122,7 +152,7 @@ private void DropForm_DragLeave(object sender, EventArgs e)
{
if (isHovered)
{
SelectBitmap(logo, DropOpacity);
SelectBitmap(backgroundImage, DropOpacity);
isHovered = false;
}
}
@ -144,7 +174,7 @@ protected override void Dispose(bool disposing)
{
components.Dispose();
}
if (logo != null) logo.Dispose();
if (backgroundImage != null) backgroundImage.Dispose();
base.Dispose(disposing);
}

View file

@ -172,6 +172,11 @@ private void InitializeComponent()
this.tsmiTrayLastRegion = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayScreenRecorder = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayAutoCapture = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayUpload = new System.Windows.Forms.ToolStripMenuItem();
this.uploadFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.uploadFromClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.uploadFromURLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.dragAndDropUploadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayWorkflows = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayTools = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayScreenColorPicker = new System.Windows.Forms.ToolStripMenuItem();
@ -194,6 +199,8 @@ private void InitializeComponent()
this.tsmiTrayFileUploaders = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayURLShorteners = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTraySocialServices = new System.Windows.Forms.ToolStripMenuItem();
this.tssTrayDestinations1 = new System.Windows.Forms.ToolStripSeparator();
this.tsmiTrayDestinationSettings = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayApplicationSettings = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayTaskSettings = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayHotkeySettings = new System.Windows.Forms.ToolStripMenuItem();
@ -207,13 +214,6 @@ private void InitializeComponent()
this.tsmiTrayShow = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem();
this.ssToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayUpload = new System.Windows.Forms.ToolStripMenuItem();
this.uploadFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.uploadFromClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.uploadFromURLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.dragAndDropUploadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tssTrayDestinations1 = new System.Windows.Forms.ToolStripSeparator();
this.tsmiTrayDestinationSettings = new System.Windows.Forms.ToolStripMenuItem();
this.tsMain.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
@ -1501,6 +1501,50 @@ private void InitializeComponent()
this.tsmiTrayAutoCapture.Text = "Auto capture...";
this.tsmiTrayAutoCapture.Click += new System.EventHandler(this.tsmiAutoCapture_Click);
//
// tsmiTrayUpload
//
this.tsmiTrayUpload.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.uploadFileToolStripMenuItem,
this.uploadFromClipboardToolStripMenuItem,
this.uploadFromURLToolStripMenuItem,
this.dragAndDropUploadToolStripMenuItem});
this.tsmiTrayUpload.Image = global::ShareX.Properties.Resources.arrow_090;
this.tsmiTrayUpload.Name = "tsmiTrayUpload";
this.tsmiTrayUpload.Size = new System.Drawing.Size(188, 22);
this.tsmiTrayUpload.Text = "Upload";
//
// uploadFileToolStripMenuItem
//
this.uploadFileToolStripMenuItem.Image = global::ShareX.Properties.Resources.folder;
this.uploadFileToolStripMenuItem.Name = "uploadFileToolStripMenuItem";
this.uploadFileToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.uploadFileToolStripMenuItem.Text = "Upload file...";
this.uploadFileToolStripMenuItem.Click += new System.EventHandler(this.tsbFileUpload_Click);
//
// uploadFromClipboardToolStripMenuItem
//
this.uploadFromClipboardToolStripMenuItem.Image = global::ShareX.Properties.Resources.clipboard;
this.uploadFromClipboardToolStripMenuItem.Name = "uploadFromClipboardToolStripMenuItem";
this.uploadFromClipboardToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.uploadFromClipboardToolStripMenuItem.Text = "Upload from clipboard...";
this.uploadFromClipboardToolStripMenuItem.Click += new System.EventHandler(this.tsbClipboardUpload_Click);
//
// uploadFromURLToolStripMenuItem
//
this.uploadFromURLToolStripMenuItem.Image = global::ShareX.Properties.Resources.drive;
this.uploadFromURLToolStripMenuItem.Name = "uploadFromURLToolStripMenuItem";
this.uploadFromURLToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.uploadFromURLToolStripMenuItem.Text = "Upload from URL...";
this.uploadFromURLToolStripMenuItem.Click += new System.EventHandler(this.tsmiUploadURL_Click);
//
// dragAndDropUploadToolStripMenuItem
//
this.dragAndDropUploadToolStripMenuItem.Image = global::ShareX.Properties.Resources.inbox;
this.dragAndDropUploadToolStripMenuItem.Name = "dragAndDropUploadToolStripMenuItem";
this.dragAndDropUploadToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.dragAndDropUploadToolStripMenuItem.Text = "Drag and drop upload...";
this.dragAndDropUploadToolStripMenuItem.Click += new System.EventHandler(this.tsbDragDropUpload_Click);
//
// tsmiTrayWorkflows
//
this.tsmiTrayWorkflows.Image = global::ShareX.Properties.Resources.categories;
@ -1685,6 +1729,19 @@ private void InitializeComponent()
this.tsmiTraySocialServices.Size = new System.Drawing.Size(212, 22);
this.tsmiTraySocialServices.Text = "Social networking services";
//
// tssTrayDestinations1
//
this.tssTrayDestinations1.Name = "tssTrayDestinations1";
this.tssTrayDestinations1.Size = new System.Drawing.Size(209, 6);
//
// tsmiTrayDestinationSettings
//
this.tsmiTrayDestinationSettings.Image = global::ShareX.Properties.Resources.globe_pencil;
this.tsmiTrayDestinationSettings.Name = "tsmiTrayDestinationSettings";
this.tsmiTrayDestinationSettings.Size = new System.Drawing.Size(212, 22);
this.tsmiTrayDestinationSettings.Text = "Destination settings...";
this.tsmiTrayDestinationSettings.Click += new System.EventHandler(this.tsbDestinationSettings_Click);
//
// tsmiTrayApplicationSettings
//
this.tsmiTrayApplicationSettings.Image = global::ShareX.Properties.Resources.wrench_screwdriver;
@ -1781,63 +1838,6 @@ private void InitializeComponent()
this.ssToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.ssToolStripMenuItem.Text = "ss";
//
// tsmiTrayUpload
//
this.tsmiTrayUpload.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.uploadFileToolStripMenuItem,
this.uploadFromClipboardToolStripMenuItem,
this.uploadFromURLToolStripMenuItem,
this.dragAndDropUploadToolStripMenuItem});
this.tsmiTrayUpload.Image = global::ShareX.Properties.Resources.arrow_090;
this.tsmiTrayUpload.Name = "tsmiTrayUpload";
this.tsmiTrayUpload.Size = new System.Drawing.Size(188, 22);
this.tsmiTrayUpload.Text = "Upload";
//
// uploadFileToolStripMenuItem
//
this.uploadFileToolStripMenuItem.Image = global::ShareX.Properties.Resources.folder;
this.uploadFileToolStripMenuItem.Name = "uploadFileToolStripMenuItem";
this.uploadFileToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.uploadFileToolStripMenuItem.Text = "Upload file...";
this.uploadFileToolStripMenuItem.Click += new System.EventHandler(this.tsbFileUpload_Click);
//
// uploadFromClipboardToolStripMenuItem
//
this.uploadFromClipboardToolStripMenuItem.Image = global::ShareX.Properties.Resources.clipboard;
this.uploadFromClipboardToolStripMenuItem.Name = "uploadFromClipboardToolStripMenuItem";
this.uploadFromClipboardToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.uploadFromClipboardToolStripMenuItem.Text = "Upload from clipboard...";
this.uploadFromClipboardToolStripMenuItem.Click += new System.EventHandler(this.tsbClipboardUpload_Click);
//
// uploadFromURLToolStripMenuItem
//
this.uploadFromURLToolStripMenuItem.Image = global::ShareX.Properties.Resources.drive;
this.uploadFromURLToolStripMenuItem.Name = "uploadFromURLToolStripMenuItem";
this.uploadFromURLToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.uploadFromURLToolStripMenuItem.Text = "Upload from URL...";
this.uploadFromURLToolStripMenuItem.Click += new System.EventHandler(this.tsmiUploadURL_Click);
//
// dragAndDropUploadToolStripMenuItem
//
this.dragAndDropUploadToolStripMenuItem.Image = global::ShareX.Properties.Resources.inbox;
this.dragAndDropUploadToolStripMenuItem.Name = "dragAndDropUploadToolStripMenuItem";
this.dragAndDropUploadToolStripMenuItem.Size = new System.Drawing.Size(203, 22);
this.dragAndDropUploadToolStripMenuItem.Text = "Drag and drop upload...";
this.dragAndDropUploadToolStripMenuItem.Click += new System.EventHandler(this.tsbDragDropUpload_Click);
//
// tssTrayDestinations1
//
this.tssTrayDestinations1.Name = "tssTrayDestinations1";
this.tssTrayDestinations1.Size = new System.Drawing.Size(209, 6);
//
// tsmiTrayDestinationSettings
//
this.tsmiTrayDestinationSettings.Image = global::ShareX.Properties.Resources.globe_pencil;
this.tsmiTrayDestinationSettings.Name = "tsmiTrayDestinationSettings";
this.tsmiTrayDestinationSettings.Size = new System.Drawing.Size(212, 22);
this.tsmiTrayDestinationSettings.Text = "Destination settings...";
this.tsmiTrayDestinationSettings.Click += new System.EventHandler(this.tsbDestinationSettings_Click);
//
// MainForm
//
this.AllowDrop = true;