mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 17:56:51 +13:00
Custom drag & drop form background
This commit is contained in:
parent
b5ceb563f8
commit
523f6ddbbb
4 changed files with 113 additions and 83 deletions
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
128
ShareX/Forms/MainForm.Designer.cs
generated
128
ShareX/Forms/MainForm.Designer.cs
generated
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue