diff --git a/Bin/net40/SunnyUI.Demo.exe b/Bin/net40/SunnyUI.Demo.exe index 805b358e..c0cac7b5 100644 Binary files a/Bin/net40/SunnyUI.Demo.exe and b/Bin/net40/SunnyUI.Demo.exe differ diff --git a/Bin/net40/SunnyUI.dll b/Bin/net40/SunnyUI.dll index b600291d..daf76e3f 100644 Binary files a/Bin/net40/SunnyUI.dll and b/Bin/net40/SunnyUI.dll differ diff --git a/Bin/net45/SunnyUI.dll b/Bin/net45/SunnyUI.dll index 44ed84af..bf4d71bf 100644 Binary files a/Bin/net45/SunnyUI.dll and b/Bin/net45/SunnyUI.dll differ diff --git a/Bin/net5.0-windows/SunnyUI.dll b/Bin/net5.0-windows/SunnyUI.dll index ee3b0124..be99475c 100644 Binary files a/Bin/net5.0-windows/SunnyUI.dll and b/Bin/net5.0-windows/SunnyUI.dll differ diff --git a/Bin/net5.0-windows/ref/SunnyUI.dll b/Bin/net5.0-windows/ref/SunnyUI.dll index e17d03e2..7944dc2b 100644 Binary files a/Bin/net5.0-windows/ref/SunnyUI.dll and b/Bin/net5.0-windows/ref/SunnyUI.dll differ diff --git a/Bin/netcoreapp3.1/SunnyUI.dll b/Bin/netcoreapp3.1/SunnyUI.dll index aa2f36d3..1230e2f2 100644 Binary files a/Bin/netcoreapp3.1/SunnyUI.dll and b/Bin/netcoreapp3.1/SunnyUI.dll differ diff --git a/SunnyUI/Controls/UIAvatar.cs b/SunnyUI/Controls/UIAvatar.cs index edffd0e5..2176b7f1 100644 --- a/SunnyUI/Controls/UIAvatar.cs +++ b/SunnyUI/Controls/UIAvatar.cs @@ -246,6 +246,8 @@ namespace Sunny.UI [DefaultValue(0), Description("垂直偏移"), Category("SunnyUI")] public int OffsetY { get; set; } = 0; + public event PaintEventHandler PaintAgain; + /// /// OnPaint /// @@ -259,9 +261,9 @@ namespace Sunny.UI return; } - int size = Math.Min(Width, Height) - 3; if (Icon == UIIcon.Image) { + int size = avatarSize; if (Image == null) { return; @@ -274,21 +276,21 @@ namespace Sunny.UI (int)(Image.Height * 1.0 / Math.Min(sc1, sc2) + 0.5)); Bitmap bmp = scaleImage.Split(size, Shape); - e.Graphics.DrawImage(bmp, 1, 1); + e.Graphics.DrawImage(bmp, (Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY); bmp.Dispose(); scaleImage.Dispose(); e.Graphics.SetHighQuality(); - using (Pen pn = new Pen(BackColor, 2)) + using (Pen pn = new Pen(BackColor, 4)) { if (Shape == UIShape.Circle) { - e.Graphics.DrawEllipse(pn, 1, 1, size, size); + e.Graphics.DrawEllipse(pn, (Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY, size, size); } if (Shape == UIShape.Square) { - e.Graphics.DrawRoundRectangle(pn, 1, 1, size, size, 5); + e.Graphics.DrawRoundRectangle(pn, (Width - avatarSize) / 2 + 1 + OffsetX, (Height - avatarSize) / 2 + 1 + OffsetY, size, size, 5); } } @@ -305,6 +307,8 @@ namespace Sunny.UI 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); } + + PaintAgain?.Invoke(this, e); } } } \ No newline at end of file