DotNet 4.8.1 build of DotNetBar
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DevComponents.DotNetBar.Layout
|
||||
{
|
||||
internal static class Helpers
|
||||
{
|
||||
public static Size Max(Size s1, Size s2)
|
||||
{
|
||||
return new Size(Math.Max(s1.Width, s2.Width), Math.Max(s1.Height, s2.Height));
|
||||
}
|
||||
public static Rectangle Deflate(Rectangle r, System.Windows.Forms.Padding padding)
|
||||
{
|
||||
r.X += padding.Left;
|
||||
r.Width -= padding.Horizontal;
|
||||
r.Y += padding.Top;
|
||||
r.Height -= padding.Vertical;
|
||||
|
||||
return r;
|
||||
}
|
||||
public static Rectangle Deflate(Rectangle r, DevComponents.DotNetBar.Padding padding)
|
||||
{
|
||||
r.X += padding.Left;
|
||||
r.Width -= padding.Horizontal;
|
||||
r.Y += padding.Top;
|
||||
r.Height -= padding.Vertical;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
public static int GetTextBaseline(Control ctrl, ContentAlignment alignment)
|
||||
{
|
||||
return GetTextBaseline(ctrl, ctrl.Font, alignment);
|
||||
}
|
||||
|
||||
public static int GetTextBaseline(Control ctrl, Font font, ContentAlignment alignment)
|
||||
{
|
||||
Rectangle clientRect = ctrl.ClientRectangle;
|
||||
int ascent = 0;
|
||||
int height = 0;
|
||||
using (Graphics g = ctrl.CreateGraphics())
|
||||
{
|
||||
IntPtr hdc = g.GetHdc();
|
||||
IntPtr hFont = font.ToHfont();
|
||||
try
|
||||
{
|
||||
IntPtr oldObject = WinApi.SelectObject(hdc, hFont);
|
||||
WinApi.TEXTMETRIC tm = new WinApi.TEXTMETRIC();
|
||||
WinApi.GetTextMetrics(new HandleRef(ctrl, hdc), tm);
|
||||
ascent = tm.tmAscent + 1;
|
||||
height = tm.tmHeight;
|
||||
WinApi.SelectObject(hdc, oldObject);
|
||||
}
|
||||
finally
|
||||
{
|
||||
WinApi.DeleteObject(hFont);
|
||||
g.ReleaseHdc(hdc);
|
||||
}
|
||||
}
|
||||
if ((alignment & (ContentAlignment.TopRight | ContentAlignment.TopCenter | ContentAlignment.TopLeft)) != (ContentAlignment)0)
|
||||
{
|
||||
return (clientRect.Top + ascent);
|
||||
}
|
||||
if ((alignment & (ContentAlignment.MiddleRight | ContentAlignment.MiddleCenter | ContentAlignment.MiddleLeft)) != (ContentAlignment)0)
|
||||
{
|
||||
return (((clientRect.Top + (clientRect.Height / 2)) - (height / 2)) + ascent);
|
||||
}
|
||||
return ((clientRect.Bottom - height) + ascent);
|
||||
}
|
||||
public static bool IsEmpty(System.Windows.Forms.Padding p)
|
||||
{
|
||||
return p.Left == 0 && p.Right == 0 && p.Top == 0 && p.Bottom == 0;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user