mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-04 04:06:05 +13:00
Allow creating gradient even when start and end gradient stop is missing
This commit is contained in:
parent
e0666badb6
commit
0a106e28cd
3 changed files with 49 additions and 12 deletions
|
@ -42,7 +42,7 @@ public bool IsValid
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Colors != null && Colors.Count >= 2 && Colors.Any(x => x.Location == 0f) && Colors.Any(x => x.Location == 100f);
|
return Colors != null && Colors.Count > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,10 +71,21 @@ public void Draw(Graphics g, Rectangle rect)
|
||||||
|
|
||||||
public ColorBlend GetColorBlend()
|
public ColorBlend GetColorBlend()
|
||||||
{
|
{
|
||||||
|
List<GradientStop> colors = new List<GradientStop>(Colors.OrderBy(x => x.Location));
|
||||||
|
|
||||||
|
if (!colors.Any(x => x.Location == 0))
|
||||||
|
{
|
||||||
|
colors.Insert(0, new GradientStop(colors[0].Color, 0f));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!colors.Any(x => x.Location == 100))
|
||||||
|
{
|
||||||
|
colors.Add(new GradientStop(colors[colors.Count - 1].Color, 100f));
|
||||||
|
}
|
||||||
|
|
||||||
ColorBlend colorBlend = new ColorBlend();
|
ColorBlend colorBlend = new ColorBlend();
|
||||||
IEnumerable<GradientStop> gradient = Colors.OrderBy(x => x.Location);
|
colorBlend.Colors = colors.Select(x => x.Color).ToArray();
|
||||||
colorBlend.Colors = gradient.Select(x => x.Color).ToArray();
|
colorBlend.Positions = colors.Select(x => x.Location / 100).ToArray();
|
||||||
colorBlend.Positions = gradient.Select(x => x.Location / 100).ToArray();
|
|
||||||
return colorBlend;
|
return colorBlend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace ShareX.HelpersLib
|
||||||
public class GradientStop
|
public class GradientStop
|
||||||
{
|
{
|
||||||
[DefaultValue(typeof(Color), "Black"), Editor(typeof(MyColorEditor), typeof(UITypeEditor)), TypeConverter(typeof(MyColorConverter))]
|
[DefaultValue(typeof(Color), "Black"), Editor(typeof(MyColorEditor), typeof(UITypeEditor)), TypeConverter(typeof(MyColorConverter))]
|
||||||
public Color Color { get; set; }
|
public Color Color { get; set; } = Color.Black;
|
||||||
|
|
||||||
private float location;
|
private float location;
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@ public float Location
|
||||||
|
|
||||||
public GradientStop()
|
public GradientStop()
|
||||||
{
|
{
|
||||||
this.ApplyDefaultPropertyValues();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public GradientStop(Color color, float offset)
|
public GradientStop(Color color, float offset)
|
||||||
|
|
|
@ -146,6 +146,10 @@
|
||||||
<data name=">>lvGradientPoints.ZOrder" xml:space="preserve">
|
<data name=">>lvGradientPoints.ZOrder" xml:space="preserve">
|
||||||
<value>11</value>
|
<value>11</value>
|
||||||
</data>
|
</data>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="btnAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="btnAdd.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnAdd.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>8, 112</value>
|
<value>8, 112</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -170,6 +174,9 @@
|
||||||
<data name=">>btnAdd.ZOrder" xml:space="preserve">
|
<data name=">>btnAdd.ZOrder" xml:space="preserve">
|
||||||
<value>9</value>
|
<value>9</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>8, 136</value>
|
<value>8, 136</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -195,15 +202,14 @@
|
||||||
<value>8</value>
|
<value>8</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="nudLocation.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="nudLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>64, 188</value>
|
<value>8, 216</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="nudLocation.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="nudLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>56, 20</value>
|
<value>112, 20</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="nudLocation.TabIndex" type="System.Int32, mscorlib">
|
<data name="nudLocation.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>5</value>
|
<value>5</value>
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="nudLocation.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
<data name="nudLocation.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
|
||||||
<value>Center</value>
|
<value>Center</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -222,8 +228,11 @@
|
||||||
<data name="lblLocation.AutoSize" type="System.Boolean, mscorlib">
|
<data name="lblLocation.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="lblLocation.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="lblLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>5, 192</value>
|
<value>5, 200</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="lblLocation.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="lblLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>51, 13</value>
|
<value>51, 13</value>
|
||||||
|
@ -270,6 +279,9 @@
|
||||||
<data name="lblGradientType.AutoSize" type="System.Boolean, mscorlib">
|
<data name="lblGradientType.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblGradientType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="lblGradientType.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="lblGradientType.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>5, 88</value>
|
<value>5, 88</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -294,6 +306,9 @@
|
||||||
<data name=">>lblGradientType.ZOrder" xml:space="preserve">
|
<data name=">>lblGradientType.ZOrder" xml:space="preserve">
|
||||||
<value>4</value>
|
<value>4</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>8, 280</value>
|
<value>8, 280</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -318,6 +333,9 @@
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="btnCancel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>112, 280</value>
|
<value>112, 280</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -342,6 +360,9 @@
|
||||||
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="pbPreview.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="pbPreview.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="pbPreview.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>8, 26</value>
|
<value>8, 26</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -366,6 +387,9 @@
|
||||||
<data name="lblPreview.AutoSize" type="System.Boolean, mscorlib">
|
<data name="lblPreview.AutoSize" type="System.Boolean, mscorlib">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblPreview.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="lblPreview.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="lblPreview.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>5, 8</value>
|
<value>5, 8</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -390,8 +414,11 @@
|
||||||
<data name=">>lblPreview.ZOrder" xml:space="preserve">
|
<data name=">>lblPreview.ZOrder" xml:space="preserve">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="cbtnCurrentColor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||||
|
<value>NoControl</value>
|
||||||
|
</data>
|
||||||
<data name="cbtnCurrentColor.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="cbtnCurrentColor.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>8, 160</value>
|
<value>8, 168</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="cbtnCurrentColor.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="cbtnCurrentColor.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>112, 24</value>
|
<value>112, 24</value>
|
||||||
|
@ -406,7 +433,7 @@
|
||||||
<value>cbtnCurrentColor</value>
|
<value>cbtnCurrentColor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cbtnCurrentColor.Type" xml:space="preserve">
|
<data name=">>cbtnCurrentColor.Type" xml:space="preserve">
|
||||||
<value>ShareX.HelpersLib.ColorButton, ShareX.HelpersLib, Version=13.0.2.0, Culture=neutral, PublicKeyToken=null</value>
|
<value>ShareX.HelpersLib.ColorButton, ShareX.HelpersLib, Version=13.1.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>cbtnCurrentColor.Parent" xml:space="preserve">
|
<data name=">>cbtnCurrentColor.Parent" xml:space="preserve">
|
||||||
<value>$this</value>
|
<value>$this</value>
|
||||||
|
|
Loading…
Reference in a new issue