|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Drawing.Drawing2D;
|
|
|
|
|
using System.Drawing.Text;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace DNSD_Controls
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 箭头控件类
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x02000005 RID: 5
|
|
|
|
|
[Description("一个箭头控件,支持设置不同的方向,颜色,文本信息")]
|
|
|
|
|
public class HslArrow : UserControl
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 实例化一个默认的箭头控件
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x06000016 RID: 22 RVA: 0x000112AC File Offset: 0x0000F4AC
|
|
|
|
|
public HslArrow()
|
|
|
|
|
{
|
|
|
|
|
this.InitializeComponent();
|
|
|
|
|
this.sf = new StringFormat();
|
|
|
|
|
this.sf.Alignment = StringAlignment.Center;
|
|
|
|
|
this.sf.LineAlignment = StringAlignment.Center;
|
|
|
|
|
base.SetStyle(ControlStyles.UserPaint | ControlStyles.SupportsTransparentBackColor, true);
|
|
|
|
|
base.SetStyle(ControlStyles.ResizeRedraw, true);
|
|
|
|
|
base.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
|
|
|
|
base.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置控件的背景色
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x17000003 RID: 3
|
|
|
|
|
// (get) Token: 0x06000017 RID: 23 RVA: 0x00011393 File Offset: 0x0000F593
|
|
|
|
|
// (set) Token: 0x06000018 RID: 24 RVA: 0x0001139B File Offset: 0x0000F59B
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置控件的背景色")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(Color), "Transparent")]
|
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Always)]
|
|
|
|
|
public override Color BackColor
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return base.BackColor;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
base.BackColor = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置当前控件的文本
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x17000004 RID: 4
|
|
|
|
|
// (get) Token: 0x06000019 RID: 25 RVA: 0x000113A8 File Offset: 0x0000F5A8
|
|
|
|
|
// (set) Token: 0x0600001A RID: 26 RVA: 0x000113C0 File Offset: 0x0000F5C0
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置当前控件的文本")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Always)]
|
|
|
|
|
[Bindable(true)]
|
|
|
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
|
|
|
|
public override string Text
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return base.Text;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
base.Text = value;
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置控件的前景色
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x17000005 RID: 5
|
|
|
|
|
// (get) Token: 0x0600001B RID: 27 RVA: 0x000113D2 File Offset: 0x0000F5D2
|
|
|
|
|
// (set) Token: 0x0600001C RID: 28 RVA: 0x000113DA File Offset: 0x0000F5DA
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置控件的前景色")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(Color), "White")]
|
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Always)]
|
|
|
|
|
public override Color ForeColor
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return base.ForeColor;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
base.ForeColor = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置箭头控件的边缘颜色
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x17000006 RID: 6
|
|
|
|
|
// (get) Token: 0x0600001D RID: 29 RVA: 0x000113E4 File Offset: 0x0000F5E4
|
|
|
|
|
// (set) Token: 0x0600001E RID: 30 RVA: 0x000113FC File Offset: 0x0000F5FC
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置箭头控件的边缘颜色")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(Color), "DimGray")]
|
|
|
|
|
public virtual Color EdgeColor
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.edgeColor;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.edgeColor = value;
|
|
|
|
|
this.edgePen = new Pen(value, 1f);
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置箭头控件的方向
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x17000007 RID: 7
|
|
|
|
|
// (get) Token: 0x0600001F RID: 31 RVA: 0x00011420 File Offset: 0x0000F620
|
|
|
|
|
// (set) Token: 0x06000020 RID: 32 RVA: 0x00011438 File Offset: 0x0000F638
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置箭头控件的方向")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(ArrowDirection), "Right")]
|
|
|
|
|
public virtual ArrowDirection ArrowDirection
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.arrowDirection;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.arrowDirection = value;
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Token: 0x17000008 RID: 8
|
|
|
|
|
// (get) Token: 0x06000021 RID: 33 RVA: 0x0001144C File Offset: 0x0000F64C
|
|
|
|
|
// (set) Token: 0x06000022 RID: 34 RVA: 0x00011464 File Offset: 0x0000F664
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置箭头是否应用于两头,默认只有一个箭头")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(false)]
|
|
|
|
|
public virtual bool ArrowBoth
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.arrowBoth;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.arrowBoth = value;
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置箭头背景的颜色
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x17000009 RID: 9
|
|
|
|
|
// (get) Token: 0x06000023 RID: 35 RVA: 0x00011478 File Offset: 0x0000F678
|
|
|
|
|
// (set) Token: 0x06000024 RID: 36 RVA: 0x00011490 File Offset: 0x0000F690
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置箭头背景的颜色")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(Color), "DodgerBlue")]
|
|
|
|
|
public virtual Color ArrowBackColor
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.arrowBackColor;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.arrowBackColor = value;
|
|
|
|
|
Brush brush = this.brushArrow;
|
|
|
|
|
if (brush != null)
|
|
|
|
|
{
|
|
|
|
|
brush.Dispose();
|
|
|
|
|
}
|
|
|
|
|
this.brushArrow = new SolidBrush(value);
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置横向宽度的比例值,范围0-1
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x1700000A RID: 10
|
|
|
|
|
// (get) Token: 0x06000025 RID: 37 RVA: 0x000114C0 File Offset: 0x0000F6C0
|
|
|
|
|
// (set) Token: 0x06000026 RID: 38 RVA: 0x000114D8 File Offset: 0x0000F6D8
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置横向宽度的比例值,范围0-1")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(Color), "DodgerBlue")]
|
|
|
|
|
public virtual float FactorX
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.factorX;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
bool flag = value >= 0f && value <= 1f;
|
|
|
|
|
if (flag)
|
|
|
|
|
{
|
|
|
|
|
this.factorX = value;
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置纵向宽度的比例值,范围0-0.5
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x1700000B RID: 11
|
|
|
|
|
// (get) Token: 0x06000027 RID: 39 RVA: 0x00011510 File Offset: 0x0000F710
|
|
|
|
|
// (set) Token: 0x06000028 RID: 40 RVA: 0x00011528 File Offset: 0x0000F728
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[Description("获取或设置纵向宽度的比例值,范围0-0.5")]
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[DefaultValue(typeof(Color), "DodgerBlue")]
|
|
|
|
|
public virtual float FactorY
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.factorY;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
bool flag = value >= 0f && value <= 0.5f;
|
|
|
|
|
if (flag)
|
|
|
|
|
{
|
|
|
|
|
this.factorY = value;
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取或设置本箭头控件是否使用渐进色
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x1700000C RID: 12
|
|
|
|
|
// (get) Token: 0x06000029 RID: 41 RVA: 0x00011560 File Offset: 0x0000F760
|
|
|
|
|
// (set) Token: 0x0600002A RID: 42 RVA: 0x00011568 File Offset: 0x0000F768
|
|
|
|
|
[Category("HslControls")]
|
|
|
|
|
[Description("获取或设置本箭头控件是否使用渐进色")]
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
[DefaultValue(true)]
|
|
|
|
|
public virtual bool UseGradient
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return this.useGradient;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.useGradient = value;
|
|
|
|
|
base.Invalidate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 重绘控件的
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="e">重绘事件</param>
|
|
|
|
|
// Token: 0x0600002B RID: 43 RVA: 0x0001157C File Offset: 0x0000F77C
|
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Graphics graphics = e.Graphics;
|
|
|
|
|
graphics.SmoothingMode = SmoothingMode.HighQuality;
|
|
|
|
|
graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
|
|
|
|
|
this.PaintHslControls(graphics, (float)base.Width, (float)base.Height);
|
|
|
|
|
base.OnPaint(e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 绘制当前控件的界面到指定的绘图上下文里面,默认位置0,0,需要指定宽度和高度信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="g">绘图上下文</param>
|
|
|
|
|
/// <param name="width">宽度信息</param>
|
|
|
|
|
/// <param name="height">高度信息</param>
|
|
|
|
|
// Token: 0x0600002C RID: 44 RVA: 0x000115C0 File Offset: 0x0000F7C0
|
|
|
|
|
public void PaintHslControls(Graphics g, float width, float height)
|
|
|
|
|
{
|
|
|
|
|
bool flag = false;
|
|
|
|
|
if (true)
|
|
|
|
|
{
|
|
|
|
|
PointF[] array = null;
|
|
|
|
|
RectangleF layoutRectangle = default(RectangleF);
|
|
|
|
|
ArrowDirection arrowDirection = this.arrowDirection;
|
|
|
|
|
ArrowDirection arrowDirection2 = arrowDirection;
|
|
|
|
|
if (arrowDirection2 <= ArrowDirection.Up)
|
|
|
|
|
{
|
|
|
|
|
if (arrowDirection2 != ArrowDirection.Left)
|
|
|
|
|
{
|
|
|
|
|
if (arrowDirection2 == ArrowDirection.Up)
|
|
|
|
|
{
|
|
|
|
|
bool flag2 = !this.arrowBoth;
|
|
|
|
|
if (flag2)
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(width * 0.5f, 0f),
|
|
|
|
|
new PointF(width - 1f, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height - 1f),
|
|
|
|
|
new PointF(width * this.factorY, height - 1f),
|
|
|
|
|
new PointF(width * this.factorY, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(0f, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * 0.5f, 0f)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(width * this.factorY, height * (1f - this.factorX) / 2f, width * (1f - this.factorY * 2f), height * (1f - (1f - this.factorX) / 2f));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(width * 0.5f, 0f),
|
|
|
|
|
new PointF(width - 1f, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height * this.factorX),
|
|
|
|
|
new PointF(width - 1f, height * this.factorX),
|
|
|
|
|
new PointF(width / 2f, height - 1f),
|
|
|
|
|
new PointF(0f, height * this.factorX),
|
|
|
|
|
new PointF(width * this.factorY, height * this.factorX),
|
|
|
|
|
new PointF(width * this.factorY, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(0f, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * 0.5f, 0f)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(width * this.factorY, 0f, width * (1f - this.factorY * 2f), height - 1f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bool flag3 = !this.arrowBoth;
|
|
|
|
|
if (flag3)
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(0f, height * 0.5f),
|
|
|
|
|
new PointF(width * (1f - this.factorX), 0f),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height * this.factorY),
|
|
|
|
|
new PointF(width - 1f, height * this.factorY),
|
|
|
|
|
new PointF(width - 1f, height * (1f - this.factorY)),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height * (1f - this.factorY)),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height - 1f),
|
|
|
|
|
new PointF(0f, height * 0.5f)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF((1f - this.factorX) / 2f * width, height * this.factorY, width * (1f - (1f - this.factorX) / 2f), height * (1f - this.factorY * 2f));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(0f, height * 0.5f),
|
|
|
|
|
new PointF(width * (1f - this.factorX), 0f),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height * this.factorY),
|
|
|
|
|
new PointF(width * this.factorX, height * this.factorY),
|
|
|
|
|
new PointF(width * this.factorX, 0f),
|
|
|
|
|
new PointF(width - 1f, height * 0.5f),
|
|
|
|
|
new PointF(width * this.factorX, height - 1f),
|
|
|
|
|
new PointF(width * this.factorX, height * (1f - this.factorY)),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height * (1f - this.factorY)),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height - 1f),
|
|
|
|
|
new PointF(0f, height * 0.5f)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(0f, height * this.factorY, width - 1f, height * (1f - this.factorY * 2f));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (arrowDirection2 != ArrowDirection.Right)
|
|
|
|
|
{
|
|
|
|
|
if (arrowDirection2 == ArrowDirection.Down)
|
|
|
|
|
{
|
|
|
|
|
bool flag4 = !this.arrowBoth;
|
|
|
|
|
if (flag4)
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(width * (1f - this.factorY), 0f),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height * this.factorX),
|
|
|
|
|
new PointF(width - 1f, height * this.factorX),
|
|
|
|
|
new PointF(width / 2f, height - 1f),
|
|
|
|
|
new PointF(0f, height * this.factorX),
|
|
|
|
|
new PointF(width * this.factorY, height * this.factorX),
|
|
|
|
|
new PointF(width * this.factorY, 0f),
|
|
|
|
|
new PointF(width * (1f - this.factorY), 0f)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(width * this.factorY, 0f, width * (1f - this.factorY * 2f), height * (1f - (1f - this.factorX) / 2f));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(width * 0.5f, 0f),
|
|
|
|
|
new PointF(width - 1f, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * (1f - this.factorY), height * this.factorX),
|
|
|
|
|
new PointF(width - 1f, height * this.factorX),
|
|
|
|
|
new PointF(width / 2f, height - 1f),
|
|
|
|
|
new PointF(0f, height * this.factorX),
|
|
|
|
|
new PointF(width * this.factorY, height * this.factorX),
|
|
|
|
|
new PointF(width * this.factorY, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(0f, height * (1f - this.factorX)),
|
|
|
|
|
new PointF(width * 0.5f, 0f)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(width * this.factorY, 0f, width * (1f - this.factorY * 2f), height - 1f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bool flag5 = !this.arrowBoth;
|
|
|
|
|
if (flag5)
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(0f, height * this.factorY),
|
|
|
|
|
new PointF(width * this.factorX, height * this.factorY),
|
|
|
|
|
new PointF(width * this.factorX, 0f),
|
|
|
|
|
new PointF(width - 1f, height * 0.5f),
|
|
|
|
|
new PointF(width * this.factorX, height - 1f),
|
|
|
|
|
new PointF(width * this.factorX, height * (1f - this.factorY)),
|
|
|
|
|
new PointF(0f, height * (1f - this.factorY)),
|
|
|
|
|
new PointF(0f, height * this.factorY)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(0f, height * this.factorY, width * (1f - (1f - this.factorX) / 2f), height * (1f - this.factorY * 2f));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
array = new PointF[]
|
|
|
|
|
{
|
|
|
|
|
new PointF(width * this.factorX, height * this.factorY),
|
|
|
|
|
new PointF(width * this.factorX, 0f),
|
|
|
|
|
new PointF(width - 1f, height * 0.5f),
|
|
|
|
|
new PointF(width * this.factorX, height - 1f),
|
|
|
|
|
new PointF(width * this.factorX, height * (1f - this.factorY)),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height * (1f - this.factorY)),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height - 1f),
|
|
|
|
|
new PointF(0f, height * 0.5f),
|
|
|
|
|
new PointF(width * (1f - this.factorX), 0f),
|
|
|
|
|
new PointF(width * (1f - this.factorX), height * this.factorY),
|
|
|
|
|
new PointF(width * this.factorX, height * this.factorY)
|
|
|
|
|
};
|
|
|
|
|
layoutRectangle = new RectangleF(0f, height * this.factorY, width - 1f, height * (1f - this.factorY * 2f));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bool flag6 = array == null;
|
|
|
|
|
if (!flag6)
|
|
|
|
|
{
|
|
|
|
|
bool flag7 = this.useGradient;
|
|
|
|
|
if (flag7)
|
|
|
|
|
{
|
|
|
|
|
ColorBlend colorBlend = new ColorBlend();
|
|
|
|
|
colorBlend.Positions = new float[]
|
|
|
|
|
{
|
|
|
|
|
0f,
|
|
|
|
|
0.5f,
|
|
|
|
|
1f
|
|
|
|
|
};
|
|
|
|
|
colorBlend.Colors = new Color[]
|
|
|
|
|
{
|
|
|
|
|
this.arrowBackColor,
|
|
|
|
|
HslHelper.GetColorLight(this.arrowBackColor),
|
|
|
|
|
this.arrowBackColor
|
|
|
|
|
};
|
|
|
|
|
bool flag8 = this.arrowDirection == ArrowDirection.Up || this.arrowDirection == ArrowDirection.Down;
|
|
|
|
|
if (flag8)
|
|
|
|
|
{
|
|
|
|
|
using (LinearGradientBrush linearGradientBrush = new LinearGradientBrush(new PointF(0f, 0f), new PointF(width - 1f, 0f), this.arrowBackColor, this.arrowBackColor))
|
|
|
|
|
{
|
|
|
|
|
linearGradientBrush.InterpolationColors = colorBlend;
|
|
|
|
|
g.FillPolygon(linearGradientBrush, array);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
using (LinearGradientBrush linearGradientBrush2 = new LinearGradientBrush(new PointF(0f, 0f), new PointF(0f, height - 1f), this.arrowBackColor, this.arrowBackColor))
|
|
|
|
|
{
|
|
|
|
|
linearGradientBrush2.InterpolationColors = colorBlend;
|
|
|
|
|
g.FillPolygon(linearGradientBrush2, array);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
g.FillPolygon(this.brushArrow, array);
|
|
|
|
|
}
|
|
|
|
|
g.DrawPolygon(this.edgePen, array);
|
|
|
|
|
using (Brush brush = new SolidBrush(this.ForeColor))
|
|
|
|
|
{
|
|
|
|
|
g.DrawString(this.Text, this.Font, brush, layoutRectangle, this.sf);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 清理所有正在使用的资源。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
|
|
|
// Token: 0x0600002D RID: 45 RVA: 0x00012364 File Offset: 0x00010564
|
|
|
|
|
protected override void Dispose(bool disposing)
|
|
|
|
|
{
|
|
|
|
|
bool flag = disposing && this.components != null;
|
|
|
|
|
if (flag)
|
|
|
|
|
{
|
|
|
|
|
this.components.Dispose();
|
|
|
|
|
}
|
|
|
|
|
base.Dispose(disposing);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设计器支持所需的方法 - 不要修改
|
|
|
|
|
/// 使用代码编辑器修改此方法的内容。
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x0600002E RID: 46 RVA: 0x0001239C File Offset: 0x0001059C
|
|
|
|
|
private void InitializeComponent()
|
|
|
|
|
{
|
|
|
|
|
base.SuspendLayout();
|
|
|
|
|
base.AutoScaleMode = AutoScaleMode.None;
|
|
|
|
|
this.BackColor = Color.Transparent;
|
|
|
|
|
this.ForeColor = Color.White;
|
|
|
|
|
base.Name = "HslArrow";
|
|
|
|
|
base.Size = new Size(176, 49);
|
|
|
|
|
base.ResumeLayout(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000010 RID: 16
|
|
|
|
|
private StringFormat sf = null;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000011 RID: 17
|
|
|
|
|
private Color edgeColor = Color.Gray;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000012 RID: 18
|
|
|
|
|
private Pen edgePen = new Pen(Color.Gray, 1f);
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000013 RID: 19
|
|
|
|
|
private Color arrowBackColor = Color.DodgerBlue;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000014 RID: 20
|
|
|
|
|
private Brush brushArrow = new SolidBrush(Color.DodgerBlue);
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000015 RID: 21
|
|
|
|
|
private ArrowDirection arrowDirection = ArrowDirection.Right;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000016 RID: 22
|
|
|
|
|
private float factorX = 0.75f;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000017 RID: 23
|
|
|
|
|
private float factorY = 0.27f;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000018 RID: 24
|
|
|
|
|
private bool useGradient = true;
|
|
|
|
|
|
|
|
|
|
// Token: 0x04000019 RID: 25
|
|
|
|
|
private bool arrowBoth = false;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 必需的设计器变量。
|
|
|
|
|
/// </summary>
|
|
|
|
|
// Token: 0x0400001A RID: 26
|
|
|
|
|
private IContainer components = null;
|
|
|
|
|
}
|
|
|
|
|
}
|