diff --git a/SunnyUI/Common/UGraphics.cs b/SunnyUI/Common/UGraphics.cs index 282c3da4..df9784d3 100644 --- a/SunnyUI/Common/UGraphics.cs +++ b/SunnyUI/Common/UGraphics.cs @@ -120,62 +120,6 @@ namespace Sunny.UI g.DrawString(text, font, br, x, y); } - /// - /// 绘制字符串 - /// - /// 绘图图元 - /// 字符串 - /// 字体 - /// 颜色 - /// 大小 - /// 边距 - /// 位置位置 - public static void DrawString(this Graphics g, string str, Font font, Color color, Size size, Padding padding, ContentAlignment align, int offsetX = 0, int offsetY = 0) - { - if (str.IsNullOrEmpty()) return; - SizeF sf = g.MeasureString(str, font); - using Brush br = color.Brush(); - switch (align) - { - case ContentAlignment.MiddleCenter: - g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, - padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY); - break; - - case ContentAlignment.TopLeft: - g.DrawString(str, font, br, padding.Left + offsetX, padding.Top + offsetY); - break; - - case ContentAlignment.TopCenter: - g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, padding.Top + offsetY); - break; - - case ContentAlignment.TopRight: - g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, padding.Top + offsetY); - break; - - case ContentAlignment.MiddleLeft: - g.DrawString(str, font, br, padding.Left + offsetX, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY); - break; - - case ContentAlignment.MiddleRight: - g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY); - break; - - case ContentAlignment.BottomLeft: - g.DrawString(str, font, br, padding.Left + offsetX, size.Height - sf.Height - padding.Bottom + offsetY); - break; - - case ContentAlignment.BottomCenter: - g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, size.Height - sf.Height - padding.Bottom + offsetY); - break; - - case ContentAlignment.BottomRight: - g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, size.Height - sf.Height - padding.Bottom + offsetY); - break; - } - } - /// /// 以文字中心点为原点,旋转文字 /// diff --git a/SunnyUI/Controls/UIProcessBar.cs b/SunnyUI/Controls/UIProcessBar.cs index f6b62948..50965534 100644 --- a/SunnyUI/Controls/UIProcessBar.cs +++ b/SunnyUI/Controls/UIProcessBar.cs @@ -154,7 +154,7 @@ namespace Sunny.UI if (ShowValue && canShow) { - e.Graphics.DrawString(processText, Font, foreColor, Size, Padding, TextAlign); + DrawString(e.Graphics, processText, Font, foreColor, Size, Padding, TextAlign); } if (image == null || image.Width != Width || image.Height != Height || imageRadius != Radius) @@ -173,7 +173,7 @@ namespace Sunny.UI g.DrawRoundRectangle(rectColor, rect, Radius); if (ShowValue && canShow) { - g.DrawString(processText, Font, fillColor, Size, Padding, TextAlign); + DrawString(g, processText, Font, fillColor, Size, Padding, TextAlign); } g.Dispose(); @@ -194,6 +194,52 @@ namespace Sunny.UI } } + private void DrawString(Graphics g, string str, Font font, Color color, Size size, Padding padding, ContentAlignment align, int offsetX = 0, int offsetY = 0) + { + if (str.IsNullOrEmpty()) return; + SizeF sf = g.MeasureString(str, font); + using Brush br = color.Brush(); + switch (align) + { + case ContentAlignment.MiddleCenter: + g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, + padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY); + break; + + case ContentAlignment.TopLeft: + g.DrawString(str, font, br, padding.Left + offsetX, padding.Top + offsetY); + break; + + case ContentAlignment.TopCenter: + g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, padding.Top + offsetY); + break; + + case ContentAlignment.TopRight: + g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, padding.Top + offsetY); + break; + + case ContentAlignment.MiddleLeft: + g.DrawString(str, font, br, padding.Left + offsetX, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY); + break; + + case ContentAlignment.MiddleRight: + g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f + offsetY); + break; + + case ContentAlignment.BottomLeft: + g.DrawString(str, font, br, padding.Left + offsetX, size.Height - sf.Height - padding.Bottom + offsetY); + break; + + case ContentAlignment.BottomCenter: + g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f + offsetX, size.Height - sf.Height - padding.Bottom + offsetY); + break; + + case ContentAlignment.BottomRight: + g.DrawString(str, font, br, size.Width - sf.Width - padding.Right + offsetX, size.Height - sf.Height - padding.Bottom + offsetY); + break; + } + } + /// /// 重载控件尺寸变更 ///