* ISymbol:增加SymbolOffset接口
This commit is contained in:
parent
88f803845e
commit
a9ed0ed86d
4
.editorconfig
Normal file
4
.editorconfig
Normal file
@ -0,0 +1,4 @@
|
||||
[*.cs]
|
||||
|
||||
# IDE0090: 使用 "new(...)"
|
||||
dotnet_diagnostic.IDE0090.severity = none
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -480,6 +480,9 @@
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="..\.editorconfig">
|
||||
<Link>.editorconfig</Link>
|
||||
</None>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
|
@ -34,7 +34,7 @@ namespace Sunny.UI
|
||||
[DefaultEvent("Click")]
|
||||
[DefaultProperty("Symbol")]
|
||||
[ToolboxItem(true)]
|
||||
public sealed class UIAvatar : UIControl
|
||||
public sealed class UIAvatar : UIControl, ISymbol
|
||||
{
|
||||
/// <summary>
|
||||
/// 头像图标类型
|
||||
@ -218,6 +218,48 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标的偏移位置"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private Point textOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("文字的偏移位置"), Category("SunnyUI")]
|
||||
public Point TextOffset
|
||||
{
|
||||
get => textOffset;
|
||||
set
|
||||
{
|
||||
textOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private Point imageOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("文字的偏移位置"), Category("SunnyUI")]
|
||||
public Point ImageOffset
|
||||
{
|
||||
get => imageOffset;
|
||||
set
|
||||
{
|
||||
imageOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OnPaintFill
|
||||
/// </summary>
|
||||
@ -225,7 +267,6 @@ namespace Sunny.UI
|
||||
/// <param name="path">path</param>
|
||||
protected override void OnPaintFill(Graphics g, GraphicsPath path)
|
||||
{
|
||||
int size = Math.Min(Width, Height) - 3;
|
||||
Rectangle rect = new Rectangle((Width - avatarSize) / 2, (Height - avatarSize) / 2, avatarSize, avatarSize);
|
||||
|
||||
switch (Shape)
|
||||
@ -240,10 +281,10 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(0), Description("水平偏移"), Category("SunnyUI")]
|
||||
[Browsable(false), DefaultValue(0), Description("水平偏移"), Category("SunnyUI")]
|
||||
public int OffsetX { get; set; } = 0;
|
||||
|
||||
[DefaultValue(0), Description("垂直偏移"), Category("SunnyUI")]
|
||||
[Browsable(false), DefaultValue(0), Description("垂直偏移"), Category("SunnyUI")]
|
||||
public int OffsetY { get; set; } = 0;
|
||||
|
||||
public event PaintEventHandler PaintAgain;
|
||||
@ -276,7 +317,7 @@ namespace Sunny.UI
|
||||
(int)(Image.Height * 1.0 / Math.Min(sc1, sc2) + 0.5));
|
||||
|
||||
Bitmap bmp = scaleImage.Split(size, Shape);
|
||||
e.Graphics.DrawImage(bmp, (Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY);
|
||||
e.Graphics.DrawImage(bmp, (Width - avatarSize) / 2 + 1 + ImageOffset.X, (Height - avatarSize) / 2 + 1 + ImageOffset.Y);
|
||||
bmp.Dispose();
|
||||
scaleImage.Dispose();
|
||||
e.Graphics.SetHighQuality();
|
||||
@ -285,12 +326,12 @@ namespace Sunny.UI
|
||||
{
|
||||
if (Shape == UIShape.Circle)
|
||||
{
|
||||
e.Graphics.DrawEllipse(pn, (Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY, size, size);
|
||||
e.Graphics.DrawEllipse(pn, (Width - avatarSize) / 2 + 1 + ImageOffset.X, (Height - avatarSize) / 2 + 1 + ImageOffset.Y, size, size);
|
||||
}
|
||||
|
||||
if (Shape == UIShape.Square)
|
||||
{
|
||||
e.Graphics.DrawRoundRectangle(pn, (Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY, size, size, 5);
|
||||
e.Graphics.DrawRoundRectangle(pn, (Width - avatarSize) / 2 + 1 + ImageOffset.X, (Height - avatarSize) / 2 + 1 + ImageOffset.Y, size, size, 5);
|
||||
}
|
||||
}
|
||||
|
||||
@ -299,13 +340,14 @@ namespace Sunny.UI
|
||||
|
||||
if (Icon == UIIcon.Symbol)
|
||||
{
|
||||
e.Graphics.DrawFontImage(symbol, symbolSize, ForeColor, new Rectangle((Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY, avatarSize, avatarSize));
|
||||
e.Graphics.DrawFontImage(symbol, symbolSize, ForeColor, new Rectangle((Width - avatarSize) / 2 + 1 + SymbolOffset.X,
|
||||
(Height - avatarSize) / 2 + 1 + SymbolOffset.Y, avatarSize, avatarSize));
|
||||
}
|
||||
|
||||
if (Icon == UIIcon.Text)
|
||||
{
|
||||
SizeF sf = e.Graphics.MeasureString(Text, Font);
|
||||
e.Graphics.DrawString(Text, Font, foreColor, (Width - sf.Width) / 2.0f + OffsetX, (Height - sf.Height) / 2.0f + 1 + OffsetY);
|
||||
e.Graphics.DrawString(Text, Font, foreColor, (Width - sf.Width) / 2.0f + TextOffset.X, (Height - sf.Height) / 2.0f + 1 + TextOffset.Y);
|
||||
}
|
||||
|
||||
PaintAgain?.Invoke(this, e);
|
||||
|
@ -30,7 +30,6 @@ using System.Drawing.Drawing2D;
|
||||
using System.Windows.Forms;
|
||||
|
||||
// ReSharper disable All
|
||||
#pragma warning disable 1591
|
||||
|
||||
namespace Sunny.UI
|
||||
{
|
||||
|
@ -34,7 +34,7 @@ namespace Sunny.UI
|
||||
[DefaultEvent("Click")]
|
||||
[DefaultProperty("Text")]
|
||||
[ToolboxItem(true)]
|
||||
public class UIHeaderButton : UIControl, IButtonControl
|
||||
public class UIHeaderButton : UIControl, IButtonControl, ISymbol
|
||||
{
|
||||
public UIHeaderButton()
|
||||
{
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Sunny.UI
|
||||
@ -355,7 +356,7 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
public class NavMenuItem
|
||||
public class NavMenuItem : ISymbol
|
||||
{
|
||||
public string Text { get; set; }
|
||||
|
||||
@ -367,6 +368,8 @@ namespace Sunny.UI
|
||||
|
||||
public int SymbolSize { get; set; } = 24;
|
||||
|
||||
public Point SymbolOffset { get; set; } = new Point(0, 0);
|
||||
|
||||
public int PageIndex { get; set; }
|
||||
|
||||
public string TipsText { get; set; }
|
||||
@ -379,6 +382,7 @@ namespace Sunny.UI
|
||||
|
||||
public bool AlwaysOpen { get; set; } = false;
|
||||
|
||||
|
||||
public NavMenuItem()
|
||||
{
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ namespace Sunny.UI
|
||||
{
|
||||
[DefaultEvent("Click")]
|
||||
[DefaultProperty("Text")]
|
||||
public class UISymbolButton : UIButton
|
||||
public class UISymbolButton : UIButton, ISymbol
|
||||
{
|
||||
private int _symbolSize = 24;
|
||||
private int _imageInterval = 2;
|
||||
@ -121,6 +121,20 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标的偏移位置"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaintFill(Graphics g, GraphicsPath path)
|
||||
{
|
||||
if (IsCircle)
|
||||
@ -153,12 +167,10 @@ namespace Sunny.UI
|
||||
if (IsCircle)
|
||||
{
|
||||
int size = Math.Min(Width, Height) - 2 - CircleRectWidth;
|
||||
using (Pen pn = new Pen(GetRectColor(), CircleRectWidth))
|
||||
{
|
||||
g.SetHighQuality();
|
||||
g.DrawEllipse(pn, (Width - size) / 2.0f, (Height - size) / 2.0f, size, size);
|
||||
g.SetDefaultQuality();
|
||||
}
|
||||
using var pn = new Pen(GetRectColor(), CircleRectWidth);
|
||||
g.SetHighQuality();
|
||||
g.DrawEllipse(pn, (Width - size) / 2.0f, (Height - size) / 2.0f, size, size);
|
||||
g.SetDefaultQuality();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -204,7 +216,7 @@ namespace Sunny.UI
|
||||
new RectangleF(
|
||||
(Width - ImageSize.Width) / 2.0f,
|
||||
Padding.Top + (Height - ImageSize.Height - Padding.Top - Padding.Bottom) / 2.0f,
|
||||
ImageSize.Width, ImageSize.Height));
|
||||
ImageSize.Width, ImageSize.Height), SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
|
||||
if (Image != null)
|
||||
@ -223,7 +235,7 @@ namespace Sunny.UI
|
||||
if (Symbol > 0 && Image == null)
|
||||
{
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, color,
|
||||
new RectangleF((Width - allWidth) / 2.0f, (Height - ImageSize.Height) / 2.0f, ImageSize.Width, ImageSize.Height));
|
||||
new RectangleF((Width - allWidth) / 2.0f, (Height - ImageSize.Height) / 2.0f, ImageSize.Width, ImageSize.Height), SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
|
||||
if (Image != null)
|
||||
@ -294,7 +306,7 @@ namespace Sunny.UI
|
||||
if (Symbol > 0 && Image == null)
|
||||
{
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, color,
|
||||
new RectangleF(left, top, ImageSize.Width, ImageSize.Height));
|
||||
new RectangleF(left, top, ImageSize.Width, ImageSize.Height), SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
|
||||
if (Image != null)
|
||||
|
@ -31,7 +31,7 @@ namespace Sunny.UI
|
||||
[ToolboxItem(true)]
|
||||
[DefaultEvent("Click")]
|
||||
[DefaultProperty("Text")]
|
||||
public sealed class UISymbolLabel : UIControl
|
||||
public sealed class UISymbolLabel : UIControl, ISymbol
|
||||
{
|
||||
private int _symbolSize = 24;
|
||||
private int _imageInterval = 2;
|
||||
@ -147,6 +147,20 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标的偏移位置"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaintFill(Graphics g, GraphicsPath path)
|
||||
{
|
||||
g.FillRectangle(BackColor, Bounds);
|
||||
@ -171,12 +185,10 @@ namespace Sunny.UI
|
||||
if (IsCircle)
|
||||
{
|
||||
int size = Math.Min(Width, Height) - 2 - CircleRectWidth;
|
||||
using (Pen pn = new Pen(GetRectColor(), CircleRectWidth))
|
||||
{
|
||||
g.SetHighQuality();
|
||||
g.DrawEllipse(pn, (Width - size) / 2.0f, (Height - size) / 2.0f, size, size);
|
||||
g.SetDefaultQuality();
|
||||
}
|
||||
using var pn = new Pen(GetRectColor(), CircleRectWidth);
|
||||
g.SetHighQuality();
|
||||
g.DrawEllipse(pn, (Width - size) / 2.0f, (Height - size) / 2.0f, size, size);
|
||||
g.SetDefaultQuality();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -247,9 +259,9 @@ namespace Sunny.UI
|
||||
}
|
||||
|
||||
if (Text.IsNullOrEmpty())
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, symbolColor, ImageInterval + (Width - ImageSize.Width) / 2.0f, (Height - ImageSize.Height) / 2.0f);
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, symbolColor, ImageInterval + (Width - ImageSize.Width) / 2.0f, (Height - ImageSize.Height) / 2.0f, SymbolOffset.X, SymbolOffset.Y);
|
||||
else
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, symbolColor, left, top);
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, symbolColor, left, top, SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ namespace Sunny.UI
|
||||
{
|
||||
[DefaultEvent("TextChanged")]
|
||||
[DefaultProperty("Text")]
|
||||
public sealed partial class UITextBox : UIPanel
|
||||
public sealed partial class UITextBox : UIPanel, ISymbol
|
||||
{
|
||||
private readonly UIEdit edit = new UIEdit();
|
||||
private readonly UIScrollBar bar = new UIScrollBar();
|
||||
@ -377,7 +377,7 @@ namespace Sunny.UI
|
||||
|
||||
private void CalcEditHeight()
|
||||
{
|
||||
TextBox edt = new TextBox();
|
||||
TextBox edt = new();
|
||||
edt.Font = edit.Font;
|
||||
MinHeight = edt.PreferredHeight;
|
||||
edt.BorderStyle = BorderStyle.None;
|
||||
@ -901,20 +901,7 @@ namespace Sunny.UI
|
||||
}
|
||||
else if (Symbol != 0)
|
||||
{
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, SymbolColor, new Rectangle(4 + symbolOffset.X, (Height - SymbolSize) / 2 + 1 + symbolOffset.Y, SymbolSize, SymbolSize));
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标偏移"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, SymbolColor, new Rectangle(4 + symbolOffset.X, (Height - SymbolSize) / 2 + 1 + symbolOffset.Y, SymbolSize, SymbolSize), SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
}
|
||||
|
||||
@ -963,5 +950,19 @@ namespace Sunny.UI
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标的偏移位置"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -180,10 +180,7 @@ namespace Sunny.UI
|
||||
{
|
||||
var bmp = new Bitmap(e.ToolTipSize.Width, e.ToolTipSize.Height);
|
||||
var g = Graphics.FromImage(bmp);
|
||||
|
||||
int symbolWidth = tooltip.Symbol > 0 ? tooltip.SymbolSize : 0;
|
||||
int symbolHeight = tooltip.Symbol > 0 ? tooltip.SymbolSize : 0;
|
||||
|
||||
SizeF titleSize = new SizeF(0, 0);
|
||||
if (tooltip.Title.IsValid())
|
||||
{
|
||||
@ -219,7 +216,6 @@ namespace Sunny.UI
|
||||
}
|
||||
|
||||
int symbolWidth = tooltip.Symbol > 0 ? tooltip.SymbolSize : 0;
|
||||
int symbolHeight = tooltip.Symbol > 0 ? tooltip.SymbolSize : 0;
|
||||
SizeF titleSize = new SizeF(0, 0);
|
||||
if (tooltip.Title.IsValid())
|
||||
{
|
||||
@ -249,7 +245,7 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
public class ToolTipControl
|
||||
public class ToolTipControl : ISymbol
|
||||
{
|
||||
public Control Control { get; set; }
|
||||
public string Title { get; set; }
|
||||
@ -259,6 +255,8 @@ namespace Sunny.UI
|
||||
|
||||
public int SymbolSize { get; set; } = 32;
|
||||
|
||||
public Point SymbolOffset { get; set; } = new Point(0, 0);
|
||||
|
||||
public Color SymbolColor { get; set; } = UIChartStyles.Dark.ForeColor;
|
||||
}
|
||||
}
|
||||
|
@ -382,7 +382,7 @@ namespace Sunny.UI
|
||||
return graphics.MeasureString(text, font).ToSize();
|
||||
}
|
||||
|
||||
private Icon ToIcon(Bitmap srcBitmap, int size)
|
||||
public Icon ToIcon(Bitmap srcBitmap, int size)
|
||||
{
|
||||
if (srcBitmap == null)
|
||||
{
|
||||
|
@ -19,8 +19,6 @@
|
||||
* 2020-01-01: V2.2.0 增加文件说明
|
||||
******************************************************************************/
|
||||
|
||||
#pragma warning disable 1591
|
||||
|
||||
using System.Drawing;
|
||||
|
||||
namespace Sunny.UI
|
||||
|
@ -62,7 +62,7 @@ namespace Sunny.UI
|
||||
{
|
||||
timer.Stop();
|
||||
|
||||
while (FontAwesomeV4Labels.Count > 0)
|
||||
while (!FontAwesomeV4Labels.IsEmpty)
|
||||
{
|
||||
if (FontAwesomeV4Labels.TryDequeue(out Label lbl))
|
||||
{
|
||||
@ -72,7 +72,7 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
while (ElegantIconsLabels.Count > 0)
|
||||
while (!ElegantIconsLabels.IsEmpty)
|
||||
{
|
||||
if (ElegantIconsLabels.TryDequeue(out Label lbl))
|
||||
{
|
||||
@ -82,7 +82,7 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
while (FontAwesomeV5SolidLabels.Count > 0)
|
||||
while (!FontAwesomeV5SolidLabels.IsEmpty)
|
||||
{
|
||||
if (FontAwesomeV5SolidLabels.TryDequeue(out Label lbl))
|
||||
{
|
||||
@ -92,7 +92,7 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
while (FontAwesomeV5RegularLabels.Count > 0)
|
||||
while (!FontAwesomeV5RegularLabels.IsEmpty)
|
||||
{
|
||||
if (FontAwesomeV5RegularLabels.TryDequeue(out Label lbl))
|
||||
{
|
||||
@ -102,7 +102,7 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
while (FontAwesomeV5BrandsLabels.Count > 0)
|
||||
while (!FontAwesomeV5BrandsLabels.IsEmpty)
|
||||
{
|
||||
if (FontAwesomeV5BrandsLabels.TryDequeue(out Label lbl))
|
||||
{
|
||||
@ -234,14 +234,17 @@ namespace Sunny.UI
|
||||
|
||||
private Label CreateLabel(int icon, UISymbolType symbolType)
|
||||
{
|
||||
Label lbl = new Label();
|
||||
lbl.AutoSize = false;
|
||||
lbl.Size = new Size(32, 32);
|
||||
lbl.ForeColor = UIColor.Blue;
|
||||
lbl.Image = FontImageHelper.CreateImage(icon, 28, UIFontColor.Primary, symbolType);
|
||||
lbl.ImageAlign = ContentAlignment.MiddleCenter;
|
||||
lbl.TextAlign = ContentAlignment.MiddleLeft;
|
||||
lbl.Margin = new Padding(2);
|
||||
Label lbl = new Label
|
||||
{
|
||||
AutoSize = false,
|
||||
Size = new Size(32, 32),
|
||||
ForeColor = UIColor.Blue,
|
||||
Image = FontImageHelper.CreateImage(icon, 28, UIFontColor.Primary, symbolType),
|
||||
ImageAlign = ContentAlignment.MiddleCenter,
|
||||
TextAlign = ContentAlignment.MiddleLeft,
|
||||
Margin = new Padding(2)
|
||||
};
|
||||
|
||||
lbl.Click += lbl_DoubleClick;
|
||||
lbl.MouseEnter += Lbl_MouseEnter;
|
||||
lbl.MouseLeave += Lbl_MouseLeave;
|
||||
|
@ -30,7 +30,7 @@ using System.Windows.Forms;
|
||||
namespace Sunny.UI
|
||||
{
|
||||
[DefaultEvent("Initialize")]
|
||||
public partial class UIPage : Form, IStyleInterface
|
||||
public partial class UIPage : Form, IStyleInterface, ISymbol
|
||||
{
|
||||
public readonly Guid Guid = Guid.NewGuid();
|
||||
private Color _rectColor = UIColor.Blue;
|
||||
@ -98,6 +98,20 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标的偏移位置"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(false), Description("在Frame框架中不被关闭"), Category("SunnyUI")]
|
||||
public bool AlwaysOpen { get; set; }
|
||||
|
||||
@ -322,7 +336,7 @@ namespace Sunny.UI
|
||||
if (!AllowShowTitle) return;
|
||||
if (Symbol > 0)
|
||||
{
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, TitleForeColor, new Rectangle(ImageInterval, 0, SymbolSize, TitleHeight));
|
||||
e.Graphics.DrawFontImage(Symbol, SymbolSize, TitleForeColor, new Rectangle(ImageInterval, 0, SymbolSize, TitleHeight), SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
|
||||
SizeF sf = e.Graphics.MeasureString(Text, Font);
|
||||
@ -800,22 +814,22 @@ namespace Sunny.UI
|
||||
|
||||
public void ShowInfoNotifier(string desc, bool isDialog = false, int timeout = 2000)
|
||||
{
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.INFO, UILocalize.InfoTitle, false, timeout);
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.INFO, UILocalize.InfoTitle, isDialog, timeout);
|
||||
}
|
||||
|
||||
public void ShowSuccessNotifier(string desc, bool isDialog = false, int timeout = 2000)
|
||||
{
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.OK, UILocalize.SuccessTitle, false, timeout);
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.OK, UILocalize.SuccessTitle, isDialog, timeout);
|
||||
}
|
||||
|
||||
public void ShowWarningNotifier(string desc, bool isDialog = false, int timeout = 2000)
|
||||
{
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.WARNING, UILocalize.WarningTitle, false, timeout);
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.WARNING, UILocalize.WarningTitle, isDialog, timeout);
|
||||
}
|
||||
|
||||
public void ShowErrorNotifier(string desc, bool isDialog = false, int timeout = 2000)
|
||||
{
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.ERROR, UILocalize.ErrorTitle, false, timeout);
|
||||
UINotifierHelper.ShowNotifier(desc, UINotifierType.ERROR, UILocalize.ErrorTitle, isDialog, timeout);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -26,7 +26,7 @@ using System.Windows.Forms;
|
||||
|
||||
namespace Sunny.UI
|
||||
{
|
||||
public partial class UITitlePage : UIPage
|
||||
public partial class UITitlePage : UIPage, ISymbol
|
||||
{
|
||||
public UITitlePage()
|
||||
{
|
||||
@ -161,12 +161,26 @@ namespace Sunny.UI
|
||||
}
|
||||
}
|
||||
|
||||
private Point symbolOffset = new Point(0, 0);
|
||||
|
||||
[DefaultValue(typeof(Point), "0, 0")]
|
||||
[Description("字体图标的偏移位置"), Category("SunnyUI")]
|
||||
public Point SymbolOffset
|
||||
{
|
||||
get => symbolOffset;
|
||||
set
|
||||
{
|
||||
symbolOffset = value;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaintFore(Graphics g, GraphicsPath path)
|
||||
{
|
||||
base.OnPaintFore(g, path);
|
||||
if (Symbol > 0)
|
||||
{
|
||||
g.DrawFontImage(Symbol, SymbolSize, ForeColor, new Rectangle(6, 0, SymbolSize, Height));
|
||||
g.DrawFontImage(Symbol, SymbolSize, ForeColor, new Rectangle(6, 0, SymbolSize, Height), SymbolOffset.X, SymbolOffset.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -385,23 +385,18 @@ namespace Sunny.UI
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 反注册窗体
|
||||
/// 反注册窗体、页面
|
||||
/// </summary>
|
||||
/// <param name="guid">GUID</param>
|
||||
/// <param name="form">窗体</param>
|
||||
public static void UnRegister(Guid guid, UIForm form)
|
||||
public static void UnRegister(Guid guid)
|
||||
{
|
||||
Forms.TryRemove(guid, out _);
|
||||
}
|
||||
if (Forms.ContainsKey(guid))
|
||||
Forms.TryRemove(guid, out _);
|
||||
|
||||
if (Pages.ContainsKey(guid))
|
||||
Pages.TryRemove(guid, out _);
|
||||
|
||||
/// <summary>
|
||||
/// 反注册页面
|
||||
/// </summary>
|
||||
/// <param name="guid">GUID</param>
|
||||
/// <param name="page">页面</param>
|
||||
public static void UnRegister(Guid guid, UIPage page)
|
||||
{
|
||||
Pages.TryRemove(guid, out _);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -22,9 +22,6 @@
|
||||
|
||||
using System.Drawing;
|
||||
|
||||
#pragma warning disable 1591
|
||||
//ButtonFillSelectedColor
|
||||
|
||||
namespace Sunny.UI
|
||||
{
|
||||
public abstract class UIBaseStyle
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net5.0-windows;netcoreapp3.1;net40;net45</TargetFrameworks>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
<ProjectGuid>{AB1CB247-E20B-4CBE-B269-570ADDD96C53}</ProjectGuid>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<RootNamespace>Sunny.UI</RootNamespace>
|
||||
|
Loading…
x
Reference in New Issue
Block a user