Browse Source

Use TextRenderer.MeasureText instead of Graphics.MeasureString to get exact result

pull/3348/head
CreateAndInject 8 months ago
parent
commit
19d4f01365
  1. 7
      ILSpy/Controls/CustomDialog.cs

7
ILSpy/Controls/CustomDialog.cs

@ -51,9 +51,8 @@ namespace ICSharpCode.ILSpy.Controls @@ -51,9 +51,8 @@ namespace ICSharpCode.ILSpy.Controls
using (Graphics g = this.CreateGraphics())
{
Rectangle screen = Screen.PrimaryScreen.WorkingArea;
SizeF size = g.MeasureString(message, label.Font, screen.Width - 20);
Size clientSize = new Size((int)(size.Width * 96 / g.DpiX), (int)(size.Height * 96 / g.DpiY));
SizeF size = TextRenderer.MeasureText(message, label.Font);
Size clientSize = new Size((int)(size.Width * 96 / g.DpiX) + DockPadding.Left + DockPadding.Right, (int)(size.Height * 96 / g.DpiY) + DockPadding.Top + DockPadding.Bottom);
Button[] buttons = new Button[buttonLabels.Length];
int[] positions = new int[buttonLabels.Length];
int pos = 0;
@ -65,7 +64,7 @@ namespace ICSharpCode.ILSpy.Controls @@ -65,7 +64,7 @@ namespace ICSharpCode.ILSpy.Controls
string buttonLabel = buttonLabels[i];
newButton.Text = buttonLabel;
newButton.Click += new EventHandler(ButtonClick);
SizeF buttonSize = g.MeasureString(buttonLabel, newButton.Font);
SizeF buttonSize = TextRenderer.MeasureText(buttonLabel, newButton.Font);
newButton.Width = Math.Max(newButton.Width, ((int)Math.Ceiling(buttonSize.Width * 96 / g.DpiX / 8.0) + 1) * 8);
positions[i] = pos;
buttons[i] = newButton;

Loading…
Cancel
Save