* 重构MeasureString
This commit is contained in:
parent
169b079f32
commit
f6f12c51c9
@ -175,7 +175,7 @@ namespace Sunny.UI
|
||||
{
|
||||
foreach (var item in Items)
|
||||
{
|
||||
SizeF sf = g.MeasureString(item.ToString(), Font);
|
||||
Size sf = TextRenderer.MeasureText(item.ToString(), Font);
|
||||
width = Math.Max(width, sf.Width);
|
||||
}
|
||||
|
||||
|
@ -319,8 +319,8 @@ namespace Sunny.UI
|
||||
if (Enabled && ShowTips && !string.IsNullOrEmpty(TipsText))
|
||||
{
|
||||
e.Graphics.SetHighQuality();
|
||||
SizeF sf = e.Graphics.MeasureString(TipsText, TempFont);
|
||||
int sfMax = (int)Math.Max(sf.Width, sf.Height) + 1;
|
||||
Size sf = TextRenderer.MeasureText(TipsText, TempFont);
|
||||
int sfMax = Math.Max(sf.Width, sf.Height);
|
||||
int x = Width - 1 - 2 - sfMax;
|
||||
int y = 1 + 1;
|
||||
e.Graphics.FillEllipse(TipsColor, x - 1, y, sfMax, sfMax);
|
||||
|
@ -24,6 +24,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Sunny.UI
|
||||
{
|
||||
@ -741,8 +742,8 @@ namespace Sunny.UI
|
||||
|
||||
if (isDate)
|
||||
{
|
||||
SizeF sf = e.Graphics.MeasureString("00", Font);
|
||||
e.Graphics.DrawRectangle(PrimaryColor, new RectangleF(left + (width - sf.Width) / 2 - 2, top + 30 + (height - sf.Height) / 2 - 1, sf.Width + 3, sf.Height));
|
||||
SizeF sf = TextRenderer.MeasureText("00", Font);
|
||||
e.Graphics.DrawRectangle(PrimaryColor, new RectangleF(left + (width - sf.Width) / 2 - 2, top + 30 + (height - sf.Height) / 2 - 1, sf.Width + 3, sf.Height + 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -619,8 +619,6 @@ namespace Sunny.UI
|
||||
ImageSize = Image.Size;
|
||||
|
||||
Color color = GetForeColor();
|
||||
SizeF sf = e.Graphics.MeasureString(Text, Font);
|
||||
|
||||
switch (textImageRelation)
|
||||
{
|
||||
case TextImageRelation.TextAboveImage:
|
||||
@ -748,8 +746,8 @@ namespace Sunny.UI
|
||||
if (Enabled && ShowTips && !string.IsNullOrEmpty(TipsText))
|
||||
{
|
||||
e.Graphics.SetHighQuality();
|
||||
sf = e.Graphics.MeasureString(TipsText, TempFont);
|
||||
int sfMax = (int)Math.Max(sf.Width, sf.Height) + 1;
|
||||
Size sf = TextRenderer.MeasureText(TipsText, TempFont);
|
||||
int sfMax = Math.Max(sf.Width, sf.Height);
|
||||
int x = Width - 1 - 2 - sfMax;
|
||||
int y = 1 + 1;
|
||||
e.Graphics.FillEllipse(TipsColor, x - 1, y, sfMax, sfMax);
|
||||
|
@ -776,7 +776,7 @@ namespace Sunny.UI
|
||||
newTransform.Translate(e.Bounds.X, e.Bounds.Y);
|
||||
g.Transform = newTransform;
|
||||
ImageListItem item = (ImageListItem)Items[e.Index];
|
||||
SizeF sf = g.MeasureString("ImageListBox", Font);
|
||||
Size sf = TextRenderer.MeasureText("ImageListBox", Font);
|
||||
int thumbnailSize = ShowDescription ? ((int)(ItemHeight - ImageInterval - sf.Height)) : (ItemHeight - ImageInterval * 2);
|
||||
|
||||
if (item.Image != null)
|
||||
@ -794,7 +794,7 @@ namespace Sunny.UI
|
||||
|
||||
if (ShowDescription && !string.IsNullOrEmpty(item.Description))
|
||||
{
|
||||
g.DrawString(item.Description, e.Font, foreColor, new Rectangle(ImageInterval, e.Bounds.Y + thumbnailSize + ImageInterval, e.Bounds.Width, e.Bounds.Height), ContentAlignment.TopLeft);
|
||||
g.DrawString(item.Description, e.Font, foreColor, new Rectangle(ImageInterval, e.Bounds.Y + thumbnailSize, e.Bounds.Width, e.Bounds.Height), ContentAlignment.TopLeft);
|
||||
}
|
||||
|
||||
g.Transform = oldTransform;
|
||||
|
@ -857,15 +857,14 @@ namespace Sunny.UI
|
||||
{
|
||||
// Use font family = _scaleFont, but size = automatic
|
||||
fSize = (float)(6F * drawRatio);
|
||||
if (fSize < 6)
|
||||
fSize = 6;
|
||||
strsize = Gr.MeasureString(str, new Font(_scaleFont.FontFamily, fSize));
|
||||
if (fSize < 6) fSize = 6;
|
||||
strsize = TextRenderer.MeasureText(str, new Font(_scaleFont.FontFamily, fSize));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use font family = _scaleFont, but size = fixed
|
||||
fSize = _scaleFont.Size;
|
||||
strsize = Gr.MeasureString(str, _scaleFont);
|
||||
strsize = TextRenderer.MeasureText(str, _scaleFont);
|
||||
}
|
||||
|
||||
int strw = (int)strsize.Width;
|
||||
@ -954,7 +953,7 @@ namespace Sunny.UI
|
||||
}
|
||||
|
||||
font = new Font(_scaleFont.FontFamily, fSize);
|
||||
strsize = Gr.MeasureString(str, font);
|
||||
strsize = TextRenderer.MeasureText(str, font);
|
||||
|
||||
int strw = (int)strsize.Width;
|
||||
int strh = (int)strsize.Height;
|
||||
@ -980,9 +979,9 @@ namespace Sunny.UI
|
||||
|
||||
// If autosize
|
||||
if (_scaleFontAutoSize)
|
||||
strsize = Gr.MeasureString(str, new Font(_scaleFont.FontFamily, fSize));
|
||||
strsize = TextRenderer.MeasureText(str, new Font(_scaleFont.FontFamily, fSize));
|
||||
else
|
||||
strsize = Gr.MeasureString(str, new Font(_scaleFont.FontFamily, _scaleFont.Size));
|
||||
strsize = TextRenderer.MeasureText(str, new Font(_scaleFont.FontFamily, _scaleFont.Size));
|
||||
|
||||
if (_drawDivInside)
|
||||
{
|
||||
@ -1094,7 +1093,7 @@ namespace Sunny.UI
|
||||
font = new Font(_scaleFont.FontFamily, _scaleFont.Size);
|
||||
}
|
||||
|
||||
SizeF strsize = Gr.MeasureString(str, font);
|
||||
SizeF strsize = TextRenderer.MeasureText(str, font);
|
||||
|
||||
// Graduations outside
|
||||
gradLength = 4 * drawRatio;
|
||||
@ -1233,7 +1232,7 @@ namespace Sunny.UI
|
||||
if (!_scaleFontAutoSize)
|
||||
{
|
||||
fSize = _scaleFont.Size;
|
||||
strsize = Gr.MeasureString(str, _scaleFont);
|
||||
strsize = TextRenderer.MeasureText(str, _scaleFont);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1242,7 +1241,7 @@ namespace Sunny.UI
|
||||
fSize = 6;
|
||||
|
||||
knobFont = new Font(_scaleFont.FontFamily, fSize);
|
||||
strsize = Gr.MeasureString(str, knobFont);
|
||||
strsize = TextRenderer.MeasureText(str, knobFont);
|
||||
}
|
||||
|
||||
int strw = (int)strsize.Width;
|
||||
|
@ -126,16 +126,16 @@ namespace Sunny.UI
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
SizeF TextSize = e.Graphics.MeasureString(Text, Font);
|
||||
Size TextSize = TextRenderer.MeasureText(Text, Font);
|
||||
if (autoSize && Dock == DockStyle.None)
|
||||
{
|
||||
float width = (MarkPos == UIMarkPos.Left || MarkPos == UIMarkPos.Right) ?
|
||||
int width = (MarkPos == UIMarkPos.Left || MarkPos == UIMarkPos.Right) ?
|
||||
TextSize.Width + MarkSize + 2 : TextSize.Width;
|
||||
float height = (MarkPos == UIMarkPos.Top || MarkPos == UIMarkPos.Bottom) ?
|
||||
int height = (MarkPos == UIMarkPos.Top || MarkPos == UIMarkPos.Bottom) ?
|
||||
TextSize.Height + MarkSize + 2 : TextSize.Height;
|
||||
|
||||
if (Width != (int)width) Width = (int)width;
|
||||
if (Height != (int)height) Height = (int)height;
|
||||
if (Width != width) Width = width;
|
||||
if (Height != height) Height = height;
|
||||
}
|
||||
|
||||
switch (markPos)
|
||||
|
@ -474,7 +474,7 @@ namespace Sunny.UI
|
||||
if (symbol > 0)
|
||||
symbolSize = MenuHelper.GetSymbolSize(node);
|
||||
|
||||
SizeF sf = TextRenderer.MeasureText(node.Text, Font);// e.Graphics.MeasureString(node.Text, Font);
|
||||
SizeF sf = TextRenderer.MeasureText(node.Text, Font);
|
||||
Color textColor = ForeColor;
|
||||
|
||||
if (i == ActiveIndex)
|
||||
|
@ -756,8 +756,8 @@ namespace Sunny.UI
|
||||
//显示Tips圆圈
|
||||
if (ShowTips && MenuHelper.GetTipsText(e.Node).IsValid())
|
||||
{
|
||||
SizeF tipsSize = e.Graphics.MeasureString(MenuHelper.GetTipsText(e.Node), TempFont);
|
||||
int sfMax = (int)Math.Max(tipsSize.Width, tipsSize.Height) + 1;
|
||||
Size tipsSize = TextRenderer.MeasureText(MenuHelper.GetTipsText(e.Node), TempFont);
|
||||
int sfMax = Math.Max(tipsSize.Width, tipsSize.Height);
|
||||
int tipsLeft = Width - sfMax - 16;
|
||||
if (e.Node.Nodes.Count > 0) tipsLeft -= 24;
|
||||
if (Bar.Visible) tipsLeft -= Bar.Width;
|
||||
|
@ -168,13 +168,13 @@ namespace Sunny.UI
|
||||
b16.Text = UILocalize.Next;
|
||||
btnSelect.Text = UILocalize.SelectTitle;
|
||||
|
||||
SizeF sf = b0.CreateGraphics().MeasureString(b0.Text, b0.Font);
|
||||
b0.Width = b0.SymbolSize + (int)sf.Width + 10;
|
||||
Size sf = TextRenderer.MeasureText(b0.Text, b0.Font);
|
||||
b0.Width = b0.SymbolSize + sf.Width + 10;
|
||||
|
||||
sf = b16.CreateGraphics().MeasureString(b16.Text, b0.Font);
|
||||
b16.Width = b16.SymbolSize + (int)sf.Width + 10;
|
||||
sf = TextRenderer.MeasureText(b16.Text, b0.Font);
|
||||
b16.Width = b16.SymbolSize + sf.Width + 10;
|
||||
|
||||
btnSelect.Width = (int)btnSelect.CreateGraphics().MeasureString(btnSelect.Text, btnSelect.Font).Width + 16;
|
||||
btnSelect.Width = TextRenderer.MeasureText(btnSelect.Text, btnSelect.Font).Width + 16;
|
||||
|
||||
uiLabel1.Text = UILocalize.SelectPageLeft;
|
||||
uiLabel2.Text = UILocalize.SelectPageRight;
|
||||
|
@ -150,7 +150,7 @@ namespace Sunny.UI
|
||||
else
|
||||
processText = posValue.ToString();
|
||||
|
||||
SizeF sf = e.Graphics.MeasureString(processText, Font);
|
||||
Size sf = TextRenderer.MeasureText(processText, Font);
|
||||
bool canShow = Height > sf.Height + 4;
|
||||
|
||||
if (ShowValue && canShow)
|
||||
@ -198,7 +198,7 @@ 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);
|
||||
Size sf = TextRenderer.MeasureText(str, font);
|
||||
using Brush br = color.Brush();
|
||||
switch (align)
|
||||
{
|
||||
|
@ -150,13 +150,11 @@ namespace Sunny.UI
|
||||
/// <param name="path">绘图路径</param>
|
||||
protected override void OnPaintFore(Graphics g, GraphicsPath path)
|
||||
{
|
||||
SizeF sf = g.MeasureString(Text, Font);
|
||||
int y = (int)((Height - sf.Height) / 2);
|
||||
|
||||
if (TextWidth != (int)sf.Width)
|
||||
Size sf = TextRenderer.MeasureText(Text, Font);
|
||||
if (TextWidth != sf.Width)
|
||||
{
|
||||
XPos = 0;
|
||||
TextWidth = (int)sf.Width;
|
||||
TextWidth = sf.Width;
|
||||
}
|
||||
|
||||
if (ScrollingType == UIScrollingType.LeftToRight)
|
||||
|
@ -258,8 +258,7 @@ namespace Sunny.UI
|
||||
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
|
||||
|
||||
drawSize = e.Graphics.MeasureString(Text, Font, new PointF(), StringFormat.GenericTypographic);
|
||||
|
||||
drawSize = TextRenderer.MeasureText(Text, Font);
|
||||
if (AutoSize)
|
||||
{
|
||||
point.X = Padding.Left;
|
||||
@ -305,8 +304,7 @@ namespace Sunny.UI
|
||||
float fontSize = e.Graphics.DpiY * Font.SizeInPoints / 72;
|
||||
|
||||
drawPath.Reset();
|
||||
drawPath.AddString(Text, Font.FontFamily, (int)Font.Style, fontSize,
|
||||
point, StringFormat.GenericTypographic);
|
||||
drawPath.AddString(Text, Font.FontFamily, (int)Font.Style, fontSize, point, StringFormat.GenericTypographic);
|
||||
|
||||
e.Graphics.FillPath(forecolorBrush, drawPath);
|
||||
e.Graphics.DrawPath(drawPen, drawPath);
|
||||
|
@ -364,7 +364,7 @@ namespace Sunny.UI
|
||||
|
||||
//字体图标
|
||||
Color color = GetForeColor();
|
||||
SizeF TextSize = e.Graphics.MeasureString(Text, Font);
|
||||
Size TextSize = TextRenderer.MeasureText(Text, Font);
|
||||
|
||||
if (ImageAlign == ContentAlignment.MiddleCenter && TextAlign == ContentAlignment.MiddleCenter)
|
||||
{
|
||||
@ -372,7 +372,7 @@ namespace Sunny.UI
|
||||
{
|
||||
e.Graphics.DrawString(Text, Font, color, ClientRectangle, ContentAlignment.MiddleCenter);
|
||||
}
|
||||
else if (TextSize.Width.Equals(0))
|
||||
else if (Text.IsNullOrEmpty())
|
||||
{
|
||||
if (ImageSize.Width > 0)
|
||||
{
|
||||
|
@ -644,7 +644,7 @@ namespace Sunny.UI
|
||||
TabRect = new Rectangle(GetTabRect(index).Location.X - 2, GetTabRect(index).Location.Y + 2, ItemSize.Width, ItemSize.Height);
|
||||
}
|
||||
|
||||
SizeF sf = e.Graphics.MeasureString(TabPages[index].Text, Font);
|
||||
Size sf = TextRenderer.MeasureText(TabPages[index].Text, Font);
|
||||
int textLeft = ImageList?.ImageSize.Width ?? 0;
|
||||
if (ImageList != null) textLeft += 4 + 4 + 6;
|
||||
if (TextAlignment == HorizontalAlignment.Right)
|
||||
@ -696,8 +696,8 @@ namespace Sunny.UI
|
||||
string TipsText = GetTipsText(TabPages[index]);
|
||||
if (Enabled && TipsText.IsValid())
|
||||
{
|
||||
sf = e.Graphics.MeasureString(TipsText, TempFont);
|
||||
int sfMax = (int)Math.Max(sf.Width, sf.Height) + 1;
|
||||
sf = TextRenderer.MeasureText(TipsText, TempFont);
|
||||
int sfMax = Math.Max(sf.Width, sf.Height);
|
||||
int x = TabRect.Width - 1 - 2 - sfMax;
|
||||
if (showActiveCloseButton || ShowCloseButton) x -= 24;
|
||||
int y = 1 + 1;
|
||||
|
@ -360,10 +360,10 @@ namespace Sunny.UI
|
||||
for (int index = 0; index <= TabCount - 1; index++)
|
||||
{
|
||||
Rectangle TabRect = new Rectangle(GetTabRect(index).Location.X - 2, GetTabRect(index).Location.Y - 2, base.ItemSize.Height + 4, base.ItemSize.Width);
|
||||
SizeF sf = e.Graphics.MeasureString(TabPages[index].Text, Font);
|
||||
Size sf = TextRenderer.MeasureText(TabPages[index].Text, Font);
|
||||
int textLeft = 4 + 6 + 4 + (ImageList?.ImageSize.Width ?? 0);
|
||||
if (TextAlignment == HorizontalAlignment.Right)
|
||||
textLeft = (int)(TabRect.Width - 4 - sf.Width);
|
||||
textLeft = TabRect.Width - 4 - sf.Width;
|
||||
if (TextAlignment == HorizontalAlignment.Center)
|
||||
textLeft = textLeft + (int)((TabRect.Width - textLeft - sf.Width) / 2.0f);
|
||||
|
||||
|
@ -258,7 +258,7 @@ namespace Sunny.UI
|
||||
{
|
||||
if (tooltip.Title.IsValid())
|
||||
{
|
||||
titleSize = e.Graphics.MeasureString(tooltip.Title, TempTitleFont);
|
||||
titleSize = TextRenderer.MeasureText(tooltip.Title, TempTitleFont);
|
||||
}
|
||||
|
||||
e.Graphics.DrawString(tooltip.Title, TempTitleFont, ForeColor, new Rectangle(tooltip.Symbol > 0 ? tooltip.SymbolSize + 5 : 5, 5, bounds.Width, bounds.Height), ContentAlignment.TopLeft);
|
||||
|
@ -1027,7 +1027,7 @@ namespace Sunny.UI
|
||||
var checkBoxLeft = drawLeft - 2;
|
||||
var imageLeft = drawLeft;
|
||||
var haveImage = false;
|
||||
var sf = e.Graphics.MeasureString(e.Node.Text, Font);
|
||||
var sf = TextRenderer.MeasureText(e.Node.Text, Font);
|
||||
|
||||
if (CheckBoxes)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user